Как сохранить полученные значения из firestore в переменную и использовать ее для различных компонентов и состояний в Vue - PullRequest
0 голосов
/ 02 марта 2019

Я ищу способ сохранить результаты, полученные из коллекции Firestore, и использовать их в переменной, а затем повторно сохранить их в data () и использовать повторно.

Я не уверен, каксохранить результаты из асинхронной функции в переменную.

Пожалуйста, помогите мне с этим, ребята

Вот мой код.

    import firebase from "firebase";


export default{

  data() {
    return {
      uid: firebase.auth().currentUser.uid,
      teamLead: ""
    };
  },
  created() {
    db.collection("users").onSnapshot(users => {
      users.docChanges().forEach(user => {
        if (this.uid == user.doc.id) {
          this.teamLead = user.doc.data().teamLead
        }
      });
    });

  console.log(this.teamLead)

В этом коде Я бы хотел сохранить значение teamLead в функции data ().Как мне это сделать?

1 Ответ

0 голосов
/ 02 марта 2019
  1. Это сумасшедшая идея читать всех пользователей из БД.Вместо этого вы можете получить пользователя по идентификатору.
  2. Не используйте «this» внутри обратных вызовов или лямбда-выражений.
  3. Вы должны понимать порядок выполнения асинхронных программ.Смотрите мои комментарии.

[]

export default{
      data() {
        return {     
          teamLead: ""
        };
      },
      created() {
        let self = this  
        db.collection("users").doc(firebase.auth().currentUser.uid).get().then(function(doc) {
            if (doc.exists) {
              self.teamLead = doc.data().teamLead
              console.log(self.teamLead)//<-- this log will executed after firestore return any data
            }        
        });

      console.log(this.teamLead)//<-- this log will executed before firestore return any data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...