Firebase Vue Vuefire UID不及时
问题描述:
我试图让vuefire/vue/firebase在有身份验证和单独用户时工作。我可以得到它当我通过手动将UID工作...Firebase Vue Vuefire UID不及时
let booksRef = db.ref('Users/' + 'SOhUKhcWzVRZmqe3AfcWMRwQR4r2' + '/Books');
但是,当我试着和一个来自火力地堡取代硬编码的UID,我得到一个空的结果......这是基本上不准备在调用的时候,即使用户登录...:
beforeCreate: function() {
var context = this;
Firebase.auth().onAuthStateChanged(function(user) {
if (user) {
currentUser = user;
context.currentUserId = user.uid;
context.currentUserEmail = user.email;
context.signedIn = true;
}
else {
context.currentUserId = null;
context.currentUserEmail = null; }
});
我怎么能保证我第一次获得UID之前,我创建路径到数据集?
谢谢!
答
我想通了一个GitHub的例子。
我在下面提供了GitHub链接。但是,简而言之,当使用auth和UID时,你必须做一些不同的事情...... Vuefire没有很好的记录。您需要使用VueJS生命周期方法beforeCreate,以及特殊的Vuefire绑定$ bindAsArray。
这里有一个片段,显示使用率:
new Vue({
el: '#app',
beforeCreate: function() {
// Setup Firebase onAuthStateChanged handler
//
// https://firebase.google.com/docs/reference/js/firebase.auth.Auth
// https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onAuthStateChanged
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
this.user = user
// https://github.com/vuejs/vuefire/blob/master/src/vuefire.js#L169
this.$bindAsArray('messages', db.ref('messages/' + user.uid))
} else {
// https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInAnonymously
firebase.auth().signInAnonymously().catch(console.error)
}
}.bind(this))
},
// Initialize reactive props, bind later when user is available
data: {
user: {},
messages: []
},