2017-02-05 69 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(); 
    }