Данные Firestore не изменились в Vuex - PullRequest
0 голосов
/ 06 мая 2019

У меня есть это действие Vuex, которое должно изменить статус пользователя при выходе из системы, но поскольку ложные значения не сохраняются в Firestore, оно не работает

logoutUser({commit, state}) {
        let user = firebase.auth().currentUser;

        db
            .collection('users')
            .where('user_id', '==', user.uid)
            .get()
            .then(snapshot => {
                snapshot.forEach((doc) => {
                    db
                        .collection('users')
                        .doc(doc.id)
                        .update({
                            is_online: false
                        });
                    localStorage.setItem('firebase_user', null);
                    firebase
                        .auth()
                        .signOut()
                        .then(() => {
                            commit('SET_AUTHENTICATED', false);
                            commit('SET_CURRENT_USER', null);
                        });
                });
            });
    }

Я только начинаю с Firestore, поэтому буду признателен за любую помощь или рекомендации ... Спасибо !!!

1 Ответ

1 голос
/ 06 мая 2019

Следующее должно работать (не проверено). Необходимо связать обещания, возвращаемые асинхронными методами (update() и signOut()).

Я предполагаю, что в коллекции users есть только один пользователь с user.uid, поэтому я использую snapshot.docs[0] для получения уникального user документа вместо forEach()

logoutUser({ commit, state }) {
  const user = firebase.auth().currentUser;
  db.collection('users')
    .where('user_id', '==', user.uid)
    .get()
    .then(snapshot => {
      const userDocSnapshot = snapshot.docs[0];

      return userDocSnapshot.ref.update({
        is_online: false
      });
    })
    .then(() => {
      return firebase.auth().signOut();
    })
    .then(() => {
      localStorage.setItem('firebase_user', null);
      commit('SET_AUTHENTICATED', false);
      commit('SET_CURRENT_USER', null);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...