我在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”未定义。 我该怎么解决?
答案 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))
},