在firebase中,如何运行查询以查找字符串中具有特定单词的匹配项?
例如查询其中包含“快乐”一词的所有描述。
我能够使用JS做到这一点,但这意味着我必须加载超过300个项目的整个数据库...
我对此表示感谢。
干杯!
答案 0 :(得分:2)
您不必为此下载整个数据库(我假设您正在通过Firestore使用实时数据库)。
您可以使用orderByChild()
,orderByKey()
和orderByValue()
之类的查询方法过滤startAt()
或endAt()
或equalTo()
的数据混合。
例如,如果您的节点网址列表为
https://mydb-xxxx.firebaseio.com/parentnode/childnodeslist
您可以通过以下方式查询:
// Find all nodes whose property myString is "hello"
var ref = firebase.database().ref("parentnode/childnodeslist");
ref.orderByChild("myString").equalTo('hello').once(‘value’).then(function(element){
console.log(element);
});
see the query doc和how to structure your data in firebase
编辑:基于评论:
如果要进行全文搜索,可以:
1)设为客户端
// assume "myString" is your param name
var word = 'hello';
var listOfItems = [];
firebase.database().ref("parentnode/childnodeslist").then(function(list){
listOfItems = list.map(function(item){
if( item.myString.indexOf(word) >= 0){
return {id: item.id, word: item.myString}
}
})
})
2)使用诸如ElasticSearch(由@ Frank-van-Puffelen建议)或Algolia
之类的第三方工具3)使用云功能