如何在firebase中找到多个孩子的匹配?

时间:2017-07-31 16:49:43

标签: javascript html firebase firebase-realtime-database

我试图找到一种从firebase数据库节点检索特定子集的方法,但是根据我的研究并回答这个问题,我发现它无法完成。 How do I retrieve specific child(s) from a firebase database node instead of the snapshot of everything in the node?

我认为,如果我引用阵列中的每个警报ID,然后连续获取它们的快照,我可以解决此问题。因此,我有这个文件阅读器,它从CSV文件中获取ID值并将它们分开,然后提醒每个ID值。

  var reader = new FileReader();
  reader.onload = function () {

  var trnsarray = reader.result.split(/\s+/).splice(1).join(', ');

  var newarray = trnsarray.split(',').map(parseFloat);

  for (var i=0; i < newarray.length; i++) {

    alert(newarray[i]);

  }

相反提醒每个ID,我希望它在newarray中获取每个ID的快照。我尝试了下面的功能但它根本不读取ID。

 var dbRef = firebase.database().ref().child('Node').(newarray[i]);
 dbRef.on('value', snapshot => {
    console.log(snapshot)
  }

如何连续获取newarray中每个ID的快照值?如何实施?

2 个答案:

答案 0 :(得分:0)

您在代码中忘记了孩子

.(newarray[i]);

试试这个:

var dbRef = firebase.database().ref().child('Node');

for (var i=0; i < newarray.length; i++) {
    dbRef.child(newarray[i]).on('value', snapshot => {
        console.log(snapshot);
    }
}

答案 1 :(得分:0)

请记住,我们可以获取快照子项,我们可以将此功能与此类代码一起使用:

var trnsarray = reader.result.split(/\s+/).splice(1).join(', ');
var beforearray = trnsarray.split(',').map(parseFloat);
var newarray = [];
var dbRef = firebase.database().ref().child('Node').orderByKey();
dbRef.on('value', snapshot => {
    snapshot.forEach(childSnapshot => {
       console.log(childSnapshot.key);
       if(beforearray.includes(childSnapshot.key)){ 
          console.log(childSnapshot.key + ' : ' + childSnapshot.val());
          //put your code here
          newarray.push(childSnapshot.key);
       }
    });
}