Я получаю ошибку Firebase " Ошибка: getToken прерван из-за изменения токена " во время выполнения транзакции Firestore с использованием библиотеки JavaScript.Ошибка не появляется каждый раз, и я не могу найти образец.Я предполагаю, что где-то реализовал некоторые условия гонки.
Поток пользователей в моем приложении выглядит следующим образом:
- Зарегистрируйте новый аккаунт и отправьте дополнительную строку в той же форме
- Войти в систему после регистрации, используя те же учетные данные
- После входа взять эту дополнительную строку и сохранить ее в Firestore (в транзакции).
- Транзакция не выполнена из-за
Error: getToken aborted due to token change.
Поток обещаний:
firebase.auth().createUserWithEmailAndPassword(email, password)
.catch(signupError => {
// no problems here
})
.then(() => {
return firebase.auth().signInWithEmailAndPassword(email, password)
})
.catch(loginError => {
// no problem here
})
.then((user) => {
// Database write call which fails (see lower code block)
return this.claimInput.writeClaimedPlace(user.user.uid, claimedPlace);
})
.catch(error => {
// "getToken aborted" ERROR GETS CAUGHT HERE, transaction fails
})
}
Вызов транзакции базы данных
firestore.runTransaction(function(transaction) {
return transaction.get(usersBusinessRef).then(function(usersBusinesDoc) {
let claimedPlaces = [];
if (usersBusinesDoc.exists && usersBusinesDoc.data().claimedPlaces) {
claimedPlaces = usersBusinesDoc.data().claimedPlaces;
}
claimedPlaces.push(claimedPlace);
return transaction.set(usersBusinessRef, { claimedPlaces }, { merge: true });
});
});
Я не смог найтиошибка в любом месте на Google.
Я думаю, что ошибка вызвана сменой токена, который происходит при входе в систему. С другой стороны, я читаю, что Firebase принимает старые токены еще на несколько минут.Есть мысли?