Firebase查询单词的搜索字符串

时间:2018-12-20 14:40:46

标签: node.js string firebase firebase-realtime-database filter

在firebase中,如何运行查询以查找字符串中具有特定单词的匹配项?

例如查询其中包含“快乐”一词的所有描述。

我能够使用JS做到这一点,但这意味着我必须加载超过300个项目的整个数据库...

我对此表示感谢。

干杯!

1 个答案:

答案 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 dochow 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)使用云功能