在vuefire的Firestore中的“ this”中获取“ undefined”

时间:2019-05-16 14:53:07

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

我在Vue应用程序中使用firebase-auth和firebase-firestore,并通过vuefire从firestore中检索用户数据。

所以,我的情况是:

data() {
  return {
      user: firebase.auth().currentUser
  }
},
firestore: {
  userData: db.collection("users").where("uid", "==", this.user.uid)
}

但是在执行代码时,应为Vue实例的“ this”未定义。 我该怎么解决?

3 个答案:

答案 0 :(得分:1)

您必须像这样返回数据:

data() {
    return {
      user: firebase.auth().currentUser
   }
}

答案 1 :(得分:1)

您无法立即对商店做出反应。当时无法保证已创建Firebase实例,并且您可以使用它。

data() {
  user: {},
  userData: {}
},

现在,您可以从Firestore返回相同的属性

firestore () {
  return {
    user: firebase.auth().currentUser,
    userData: db.collection("users").where("uid", "==", firebase.auth().currentUser.id)
  }
}

请注意,在上面的^中,您无法使用this.user.id,因为在尝试访问user之前可能尚未编写firebase.auth().currentUser.id。但是您可以使用lis = [1, 2, 3] def parts(l=lis): print(l) if len(l) == 1: yield l[0] else: for p in parts(l[1:]): yield p

答案 2 :(得分:0)

我陷入了同样的问题,不知道为什么this未定义。作为解决方法,您可以在created钩子中使用Programmatic binding,如下所示:

  created() {
    this.$bind('userData', db.collection("users").where("uid", "==", this.user.uid))
  },