0

我收到錯誤,從我的工廠/服務中檢索當前用戶標識。刪除此firebase.auth().currentUser.uid似乎工作。
我錯過了什麼嗎?
是否可以從工廠獲取用戶標識?firebase當前用戶標識

.factory("dataFire", ["$firebaseArray", "$firebaseAuth", "$firebaseObject", function($firebaseArray, $firebaseAuth, $firebaseObject){ 
var ref = firebase.database().ref("users/" + firebase.auth().currentUser.uid); 
var user = $firebaseObject(ref); 
return { 
    user: user 

} }]) 

的jsfiddle鏈接 https://jsfiddle.net/ken19net/m8qkdrpu/37/

+0

從這段代碼片段中看不出什麼問題是不可能的。有沒有什麼方法可以在** minimal ** jsfiddle/jsbin中重現問題並鏈接到您的問題? –

+0

嗨坦率感謝您的答覆。用jsfiddle鏈接更新了我的帖子。我打算把我所有的數據庫引用都放到我的服務中。 –

回答

0

您的代碼聽者連接到數據庫,運行之前用戶登錄。由於在該點firebase.auth().currentUser.uid沒有當前用戶將引發以下錯誤:

VM603 angular.min.js:118 TypeError: Cannot read property 'uid' of null

在將來的問題中,請包括錯誤消息,因爲它會爲我們節省一些時間。

解決方案是後聽衆附加用戶已通過驗證:

app.controller("appCtrl", function($scope, $firebaseAuth, myService) { 

    $scope.signIn = function() { 
    $firebaseAuth().$signInAnonymously().then(function(user) { 
     var ref = firebase.database().ref("test/" + firebase.auth().currentUser.uid); 
    }); 
    }; 

}); 

注意運行代碼像上面將創建一個新的匿名用戶帳戶,每次用戶加載頁面的時間。如果這不是你想要的,用一個auth狀態監聽器:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    var ref = firebase.database().ref("test/" + firebase.auth().currentUser.uid); 
    } 
}); 

documentation on getting the currently signed in user

+0

非常感謝frank.a給我的幫助 –

0

我可能有類似的問題。這可能有幫助。

if (firebase.auth().currentUser !== null) { 
     console.log("user id: " + firebase.auth().currentUser.uid); 

     var ref = firebase.database().ref().child("users/" + firebase.auth().currentUser.uid); 

     var syncUserObject = $firebaseObject(ref); 
     syncUserObject.$bindTo($scope, "data"); 

    } else { 
     console.log("No user currently logged in"); 
    } 

如果一切都失敗了,那麼只是JSON.stringify(Object,null,2);

相關問題