2017-06-14 84 views
0

我試圖讓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之前,我創建路徑到數據集?

謝謝!

回答

0

我想通了一個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: