node.js - Firebase 查询搜索字符串中的某个单词

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

在 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 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)使用云函数

关于node.js - Firebase 查询搜索字符串中的某个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870798/

相关文章:

mysql - 在 SequelizeJs 中定义表时,执行时其名称会更改

android - FirebaseUser 类不下载/导入

c - 如何在 C 中读取文件,将二进制缓冲区转换为二进制字符串,然后再次将二进制字符串转换为二进制缓冲区?

firebase函数:shell can't find custom functions configuration variables

javascript - Firebase 的云功能 : serializing Promises

node.js - Connect 和 Express 实用程序

php - 使用 AES-128-CTR 加密在 PHP (openssl_encrypt) 与 Node.js (crypto) 上给出不同的结果

node.js - 如何将 Maven 执行仅定位到构建文件夹?

c++ - 字符串到两个数字

java - 从字符串中提取多个相同的字符串