Firebase JS Error: getToken прерван из-за смены токена - PullRequest
0 голосов
/ 26 сентября 2018

Я получаю ошибку Firebase " Ошибка: getToken прерван из-за изменения токена " во время выполнения транзакции Firestore с использованием библиотеки JavaScript.Ошибка не появляется каждый раз, и я не могу найти образец.Я предполагаю, что где-то реализовал некоторые условия гонки.

Поток пользователей в моем приложении выглядит следующим образом:

  1. Зарегистрируйте новый аккаунт и отправьте дополнительную строку в той же форме
  2. Войти в систему после регистрации, используя те же учетные данные
  3. После входа взять эту дополнительную строку и сохранить ее в Firestore (в транзакции).
  4. Транзакция не выполнена из-за 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 принимает старые токены еще на несколько минут.Есть мысли?

...