0

Ich bekomme einen Fehler beim Abrufen der aktuellen Benutzer-ID von meinem Werk/Service. Das Entfernen dieser firebase.auth().currentUser.uid scheint zu funktionieren.
Fehle ich etwas?
Ist es möglich, Benutzer-ID von der Fabrik zu erhalten?Firebase aktuelle Benutzer-ID

.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 Link https://jsfiddle.net/ken19net/m8qkdrpu/37/

+0

Es ist unmöglich zu sehen, was genau an diesem Code-Snippet schief läuft. Gibt es eine Möglichkeit, das Problem in einer ** minimal ** jsfiddle/jsbin zu reproduzieren und diese von deiner Frage zu verlinken? –

+0

Hallo Frank danke für die Antwort. Aktualisierte meinen Post mit jsfiddle link.Ich plante, alle meine Datenbankreferenz zu meinem Service zu setzen. –

Antwort

0

Ihr Code, der den Hörer in die Datenbank anhängen, läuft vor der Benutzer angemeldet ist. Da es zu diesem Zeitpunkt keine aktuelle Benutzer firebase.auth().currentUser.uid den folgenden Fehler werfen :

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

In zukünftigen Fragen bitte die Fehlermeldung, da es uns beide Zeit gespart hätte.

Die Lösung ist es, die Zuhörer nach der Benutzer authentifiziert wurde anbringt:

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

}); 

Beachten Sie, dass wie oben Ihr Code ausgeführt wird jedes Mal ein neues anonymes Konto Benutzer erstellen der Benutzer die Seite lädt. Wenn das nicht das, was Sie wollen, verwenden Sie einen Auth Zustand Hörer:

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

Siehe documentation on getting the currently signed in user.

+0

danke frank.a große Hilfe für mich –

0

Ich könnte von einem ähnlichen Problem gehabt haben. Dies könnte helfen.

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

Wenn alles andere fehlschlägt dann nur JSON.stringify (Object, null, 2);