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

Невозможно увидеть, что происходит не так, как только этот фрагмент кода. Есть ли способ воспроизвести проблему в ** минимальном ** jsfiddle/jsbin и связать это с вашим вопросом? –

+0

привет спасибо за ответ. Обновлено мое сообщение с jsfiddle link.I планировал поместить всю ссылку на мою базу данных на мой сервис. –

ответ

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

Смежные вопросы