我有一个使用firebase.ref() . push()方法生成的id数组 . 例如 -

myarray = 
[-KoDeiUiqsMKDuXuwhzi, 
-KoDrz6ngJtNrr51tguD,
-KoDyC-_ZeSIAN1_oFk4]

我有一个项目节点,其中一些与这些ID匹配 -

/mynode
  --KoDeiUiqsMKDuXuwhzi 
     -itemprop1 : "abc"
     -itemprop2 : "xyz"
     -id : "KoDeiUiqsMKDuXuwhzi"
  --KnurYH554YNW6bcWch5
     -itemprop1 : "opq"
     -itemprop2 : "zyc"
     -id : "KnurYH554YNW6bcWch5"
  --KoDrz6ngJtNrr51tguD
     -itemprop1 : "mon"
     -itemprop2 : "ooo"
     -id : "KoDrz6ngJtNrr51tguD"
          ..
          ..
          ..
          ..

..等等..基本上id的数组是这个节点的子集 . 我想从这个节点中的id匹配的节点中检索所有对象 . 目前我的方式是这样的 -

firebase.database().ref("mynode").once('value').then(function(snap){
   snap.forEach(function(childsnap){
     if(myarray.indexOf(childsnap.key) != -1){
        //add to result
      }
   })
})

虽然这段代码有效,但我认为我可以使用orderByChild,startAt和endAt过滤来获取对象列表 . 有没有办法通过过滤而不是获取所有数据然后过滤来获得结果?它会比这段代码更有效吗?