0

내 공장/서비스에서 현재 사용자 ID를 가져 오는 중에 오류가 발생했습니다. 이것을 제거하면 firebase.auth().currentUser.uid가 작동하는 것 같습니다.
내가 누락 된 것이 있습니까?
사용자 ID를 팩토리에서 가져올 수 있습니까?현재 사용자 ID 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); 
    }); 
    }; 

}); 

하는 것으로.

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);