如何将Firestore中的结果值保存到变量中,并在Vue中的各种组件和状态上使用它

时间:2019-03-02 16:54:34

标签: firebase vue.js google-cloud-firestore

我正在寻找一种方法来保存从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 :(得分:0)

  1. 从数据库读取所有用户是一个疯狂的主意。代替您可以通过ID检索用户。
  2. 请勿在回调或lambda中使用“ 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