在 vuefire 的 firestore 中获取 "undefined" in "this"
Getting "undefined" in "this" inside firestore in vuefire
我在我的 Vue 应用程序中使用 firebase-auth 和 firebase-firestore,使用 vuefire 从 firestore 检索用户数据。
因此,在我的实例中:
data() {
return {
user: firebase.auth().currentUser
}
},
firestore: {
userData: db.collection("users").where("uid", "==", this.user.uid)
}
但是执行代码的时候,"this",应该是Vue的实例,是未定义的。
我该如何解决?
你必须return你的数据,像这样:
data() {
return {
user: firebase.auth().currentUser
}
}
您无法立即对商店做出反应。那时不能保证 firebase 实例已经创建并且您可以使用它。
data() {
user: {},
userData: {}
},
现在您可以从您的 firestore return相同的属性:
firestore () {
return {
user: firebase.auth().currentUser,
userData: db.collection("users").where("uid", "==", firebase.auth().currentUser.id)
}
}
请注意,在上面的 ^
中,您不能使用 this.user.id
,因为 user
在您尝试访问它之前可能尚未写入。但是你可以使用 firebase.auth().currentUser.id
我遇到了同样的问题,不知道为什么 this
未定义。作为解决方法,您可以在 created
挂钩中使用 Programmatic binding,如下所示:
created() {
this.$bind('userData', db.collection("users").where("uid", "==", this.user.uid))
},
我在我的 Vue 应用程序中使用 firebase-auth 和 firebase-firestore,使用 vuefire 从 firestore 检索用户数据。
因此,在我的实例中:
data() {
return {
user: firebase.auth().currentUser
}
},
firestore: {
userData: db.collection("users").where("uid", "==", this.user.uid)
}
但是执行代码的时候,"this",应该是Vue的实例,是未定义的。 我该如何解决?
你必须return你的数据,像这样:
data() {
return {
user: firebase.auth().currentUser
}
}
您无法立即对商店做出反应。那时不能保证 firebase 实例已经创建并且您可以使用它。
data() {
user: {},
userData: {}
},
现在您可以从您的 firestore return相同的属性:
firestore () {
return {
user: firebase.auth().currentUser,
userData: db.collection("users").where("uid", "==", firebase.auth().currentUser.id)
}
}
请注意,在上面的 ^
中,您不能使用 this.user.id
,因为 user
在您尝试访问它之前可能尚未写入。但是你可以使用 firebase.auth().currentUser.id
我遇到了同样的问题,不知道为什么 this
未定义。作为解决方法,您可以在 created
挂钩中使用 Programmatic binding,如下所示:
created() {
this.$bind('userData', db.collection("users").where("uid", "==", this.user.uid))
},