如何检查Firebase子级在JavaScript中是否包含任何特殊值?

时间:2018-11-26 09:50:40

标签: javascript firebase firebase-realtime-database

我正试图吸引居住在波士顿的用户。我还将在其他城市使用此方法。因此,如果它包含“ bos”或“ bo”,我还是想获取该值。在这种情况下,我无法使用equalTo,因为数据库包含的单词包含不同类型的单词,例如“ bostonmelie”,“ bostonspek”。

我试图使用这样的代码,但是没有用:

var myref= firebase.database().ref();

myref.child('Users').orderByChild('Mothclass').on("value", function(snapshot) {
    //console.log(snapshot.val());
    snapshot.forEach(function(data) {
        //console.log(data.key);

        var n = data.key.includes("bos");
        console.log(n);


    });
});

控制台日志

00jszBe7JKba7DHwZKbK1G9ID7D3 checkfraud.js:105:9
1Fnyqg0T7ldDEPGppu9zOIa66ZE2 checkfraud.js:105:9
2LbwNtF1vWW0AWiKRum45xD04812 checkfraud.js:105:9
2kB7IwMAlzWK6l5T9hWXHUoCiL42 checkfraud.js:105:9
3ASeCkjaxrQrPtelENfkm1XvZfJ3 checkfraud.js:105:9
3JmFZ9fztRbnFhTLIbscp97IXjB3 checkfraud.js:105:9
3i588ADWdsU4PX86wyNnk961GBC2 checkfraud.js:105:9
3p6tvDw3SfdOp2KptgzK0Padn143 checkfraud.js:105:9
3yAWS85t4xc8awxiZhE20qFkUGd2 checkfraud.js:105:9 

1 个答案:

答案 0 :(得分:2)

要在数据库中查询 bos开头的键:

myref.child('Users').orderByKey().startAt('bos').endAt('bos\uf8ff').on("value", function(snapshot) {
  ...

\uf8ff只是最后一个已知的Unicode字符,因此您要选择以bos开头并在bot之前结束的范围内的所有键。

您会注意到,我删除了orderByChild()调用,因为Firebase查询只能包含一个orderBy...。这种方法在服务器上执行过滤,但这意味着您可能必须在客户端上对匹配的节点重新排序。