在 firebase 中,如何运行查询来查找字符串中包含特定单词的匹配项?
例如查询所有包含“快乐”一词的描述。
我可以使用 JS 来完成此操作,但这意味着我必须加载包含超过 300 个项目的整个数据库...
干杯!
最佳答案
您不必为此下载整个数据库(我假设您在 firestore 上使用实时数据库)。
您可以使用 startAt() 等查询方法混合
、orderByChild()
或 orderByKey()
或 orderByValue()
来过滤数据)endAt()
和 equalTo()
。
例如,如果您的 Node 列表 url 是
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)使用云函数
关于node.js - Firebase 查询搜索字符串中的某个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870798/