2016-08-19 2 views
0

Wie Sie den Wert von Inmate_DOB aus der folgenden Struktur von Firebase Web API erhalten.Firebase benutzerdefinierte Abfrage

finden Sie das Snap unten:

Firebase Dashboard - Realtime DB

Ich habe versucht, den Code unten ist es zu behandeln Recht auf, aber ich habe nicht den Wert abzurufen.

GetInmate.Js

angular.module('starter.InMateIdContactDetailsController', ['firebase']) 

.controller('InMateIdContactDetailsCtrl', function($scope,$rootScope,$filter,$ionicLoading,$state,$window, $cordovaSQLite,$cordovaCamera,$firebase,$firebaseAuth,$firebaseArray) { 

var userId = firebase.auth().currentUser.uid; 

var ref = firebase.database().ref().child("Tables/Inmate_Data"); 

$scope.InMatedata = $firebaseArray(ref); 

if(!$scope.InMatedata){ 

alert('Records not found Auth!'); 

}else{ 

alert('Records found! Auth'); 

} 

firebase.auth().onAuthStateChanged(function(user) { 

if(user) { 
var userID = user.uid; 

firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => { 
const userDOB = snapshot.val().Inmate_DOB; 
alert(userDOB); 
alert(test); 
}) 
} 
}); 



}); 
+0

get Werte anstelle eines statischen Schlüssel –

Antwort

1

Ich glaube, Sie sind nach 'Tables/Inmate_Data' nur / in Ihrem ursprünglichen Code fehlt.

return firebase.database().ref('Tables/Inmate_Data/' + userId).once('value') 
.then(function(snapshot) { 
     var Inmate_dob = snapshot.val().Inmate_DOB; 
     alert(Inmate_dob); 
} 
0

Statt firebase.auth().currentUser.uid verwenden, könnten Sie onAuthStateChanged(), auf diese Weise verwenden möchten Sie immer sicher sein kann, dass der Code innerhalb des Blocks wird nur, wenn der Benutzer tatsächlich in ansonsten ausgeführt werden firebase.auth().currentUser könnte null zurück angemeldet ist. Wenn Sie sich vergewissert haben, dass dieser Wert nicht null ist, dann kann man so etwas tun:

var userID = firebase.auth().currentUser.uid; //Current User UID 

firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => { 
    const userDOB = snapshot.val().Inmate_DOB; 
    alert(userDOB); 
}); 

Um zu vermeiden, immer null, können Sie den obigen Code innerhalb onAuthStateChanged

firebase.auth().onAuthStateChanged(function(user) { 

    if(user) { 
     var userID = user.uid; 

     firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => { 
      const userDOB = snapshot.val().Inmate_DOB; 
      alert(userDOB); 
     }); 
    } 
}); 

setzen Wenn Sie möchten, das Geburtsdatum aller Benutzer abzurufen, dann können Sie etwas tun:

firebase.database().ref('Tables/Inmate_Data').on('child_added', snapshot => { 
    firebase.database().ref(snapshot.key+'/Inmate_DOB').on('value', snap => { 
     const userDOB = snap.val(); 
     alert(userDOB); 
    }); 
}); 
+0

geben folgte ich den gleichen Code, den Sie haben ment Wie oben erwähnt, habe ich den userId-Wert, aber ich bekomme den DOB-Wert als null. –

+0

@ShivSuthanM Haben Sie versucht, diesen Code in 'onAuthStateChanged()' zu setzen? –

+0

Kein bisschen verwirrt, um richtig fortzufahren. –