2017-02-05 68 views
1

迭代火力地堡兒童與非連續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(); 
 
    } 
 
}

我的火力地堡DB是這樣的:

enter image description here

我嘗試使用foreach循環遍歷用戶的孩子

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

,但它給出了錯誤data.Users.forEach is not a function。數據包含通過快照拍攝的整個數據庫。 它包含其中的主對象。

請告訴我如何迭代這個。

+0

你介意粘貼一些代碼? –

+0

@TylerBiscoe粘貼 –

回答

2

您正在將快照值傳遞給您的函數。您應該傳遞快照對象。就像這樣:

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

並在您checkifplaying功能:

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