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: [] 
    }, 

See the full github example here: