GrahfOriginal post
Rank 1: Thread
As I understand it appwrite doesn't support transactions. I'm attempting to make a document in three separate collections at the same time when a user registers. If one fails I want all to fail. This is my attempt at that. Is it wrong?
JavaScript
async ({ email, password, firstName, lastName, buildings, units, roles, }) => { const { account, databases } = createAdminClient() const user = await account.create(ID.unique(), email, password)
const userDetails = await databases.createDocument( import.meta.env.DATABASE_ID, import.meta.env.USER_DETAILS_ID, user.$id, { firstName: firstName, lastName: lastName, }, )
if (!userDetails) { await account.deleteIdentity(user.$id) }
const unitUsers = await Promise.all( buildings.map((building, index) => { databases.createDocument( import.meta.env.DATABASE_ID, import.meta.env.UNIT_USERS_ID, ID.unique(), { unitId: building + units[index], userId: user.$id, role: roles[index], }, ) }), )
if (!unitUsers) { await account.deleteIdentity(user.$id) await databases.deleteDocument( import.meta.env.DATABASE_ID, import.meta.env.USER_DETAILS_ID, userDetails.$id, ) }
if (user && userDetails && unitUsers) return { registered: true } }, }),