2017-02-05 12 views
1

Iterieren Firebase Kinder mit nicht sequentiellen id

var data; 
 
var starCountRef = firebase.database().ref(); 
 
starCountRef.on("value",snap =>{ 
 
    data = snap.val(); 
 
    console.log(data); 
 
    uid = //some uid here; 
 
    checkifplaying(data,uid); 
 
}); 
 
function checkifplaying(data,uid){ 
 
    var flag1 = 0; 
 
    var pos = -1; 
 
    console.log(data); 
 
    data.Users.forEach(function(user){ 
 
    if(uid == user.uid){ 
 
     flag1 = 1; 
 
     which = data.User; 
 
    } 
 
    }); 
 
    if(flag1 == 0){ 
 
    $("#contest3").show(); 
 
    } 
 
    else if(flag1 == 1){ 
 
    $("#contest1").show(); 
 
    $("#contest2").show(); 
 
    } 
 
}

My Firebase DB sieht wie folgt aus:

enter image description here

Ich versuche, die Nutzer Kinder mit foreach-Schleife iterieren

data.Users.forEach(function(user){ 
}) 

, aber es gibt einen Fehler als data.Users.forEach is not a function. Daten enthalten die gesamte Datenbank, die durch einen Snapshot erstellt wurde. Und es enthält das Masterobjekt darin.

Bitte sagen Sie mir, wie das zu iterieren.

+0

Würde wohlgemerkt einige der Code einfügen? –

+0

@TylerBiscoe eingefügt –

Antwort

2

Sie übergeben den Snapshot-Wert an Ihre Funktion. Sie sollten stattdessen das Snapshot-Objekt übergeben. Wie folgt aus:

starCountRef.on("value",snap =>{ 
    //data = snap; 
    console.log(snap.val()); 
    uid = //some uid here; 
    checkifplaying(snap,uid); 
}); 

Und auf checkifplaying Funktion:

function checkifplaying(data,uid){ 
    var flag1 = 0; 
    var pos = -1; 
    console.log(data); 
    data.child('Users').forEach(function(user){ 
    if(uid == user.uid){ 
     flag1 = 1; 
     which = data.User; 
    } 
    }); 
    if(flag1 == 0){ 
    $("#contest3").show(); 
    } 
    else if(flag1 == 1){ 
    $("#contest1").show(); 
    $("#contest2").show(); 
    }