Я обертываю некоторые обновления внутри транзакции, чтобы сделать их атомарными. Например, когда пользователь обновляет свое displayName (которое хранится в коллекции пользователей), displayName из firebase auth также должно быть обновлено. Я хочу сделать оба эти обновления внутри транзакции. Все примеры, которые я видел до сих пор для транзакций, касаются обновления некоторых данных документа внутри некоторой коллекции. Как насчет обертывания функций аутентификации внутри транзакции или связывания их с существующими транзакциями? Возможно ли это?
У меня есть этот фрагмент:
db.runTransaction((transaction)=>{
return transaction.get(displayNameCheckRef).then((snapshot)=>{
var newDisplayName = this.state.name;
if(snapshot.empty){
transaction.set(currentUserRef, {displayName:newDisplayName});
}
});
})
.then((newDisplayName)=>{
console.log("display name changed to " + newDisplayName);
})
.catch((error)=>{
console.log("transaction error.");
console.log(error);
});
Теперь я хочу связать приведенную ниже функцию updateProfile с транзакцией выше. Как мне это сделать?
user.updateProfile({
displayName: this.state.name
}).then(() => {
//do some stuff here
});
Большое спасибо!