Я написал транзакцию, чтобы проверить, существует ли пользователь в Firestore, прежде чем пытаться его создать.
setUserData(uid, email, displayName, photoURL, firstName, lastName, referralId) {
const userRef = this.afs.firestore.collection('users').doc(`${uid}`);
return this.afs.firestore.runTransaction(async (transaction: any) => {
const doc = await transaction.get(userRef);
let userData = {};
if (!doc.exists) {
userData = {
uid: uid,
email: email,
displayName: displayName,
photoURL: photoURL,
emailVerified: true,
firstName: firstName,
lastName: lastName,
referralId: referralId
};
transaction.set(userRef, { userData }, { merge: true }).then(() => {
this.referralService.addUserToWaitlist(referralId);
});
}
}).then(() => {
if (!environment.production) {
console.log(
'Transaction successfully committed.'
);
}
}).catch((error) => {
if (!environment.production) {
console.log('Transaction failed: ', error);
}
});
}
Тем не менее, я получаю следующую ошибку:
Transaction failed: TypeError: transaction.set(...).then is not a function
Не имеет ли transaction
эквивалент then
?