如何获取匹配子项的firebase快照?

时间:2017-10-28 00:55:49

标签: javascript firebase search firebase-realtime-database

我有这种格式的firebase数据结构 enter image description here

当用户在搜索字段中输入5133-01-329-5971时,我希望能够获取

的快照

5133-01-329-5971-OkqcPp3xJwfgmNinwGsKZmAa8xt1-1508951718305

5133-01-329-5971-OkqcPp3xJwfgmNinwGsKZmAa8xt1-1508966816945

因为它们包含用户输入的匹配项。

此代码将为我提供节点中的所有子项

  var itemdetailref = Cataloguedatabase.ref('/Listings/');

  return itemdetailref.once('value').then(function(snapshot){

  })

如何获取与5133-01-329-5971匹配的所有孩子的快照?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找一个特殊的孩子,您可以在ref var中输入此字符串。像这样:

let uid = "5133-01-329-5971";
let child = "-OkqcPp3xJwfgmNinwGsKZmAa8xt1-1508966816945";
var itemdetailref = Cataloguedatabase.ref('/Listings/'+uid+child);

return itemdetailref.once('value').then(function(snapshot){

})

但是,如果你像你在你的例子中那样搜索多个孩子,你必须得到每个孩子,然后只需要包含你的用户ID。类似的东西:

var itemdetailref = Cataloguedatabase.ref('/Listings/'+uid+child);

return itemdetailref.once('value').then(function(snapshot){
        snapshot.forEach(childSnapshot => {
            let key = childSnapshot.key;
            let uid = "5133-01-329-5971";
            //use ES6 includes function
            if(key.includes(uid)){
                myFunction(childSnapshot.val());
            }
        });
})