使用非顺序ID迭代Firebase子项

时间:2017-02-05 15:36:07

标签: javascript firebase firebase-realtime-database



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




我的Firebase数据库看起来像这样:

enter image description here

我正在尝试使用forEach循环迭代Users子项

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

,但它的错误为data.Users.forEach is not a function。 data包含通过快照获取的整个db。 它包含主对象。

请告诉我如何重复这个。

1 个答案:

答案 0 :(得分: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();
  }