在 firebase 实时数据库中使用数组搜索

时间:2021-04-03 11:38:06

标签: javascript firebase firebase-realtime-database

有没有什么方法可以像云数据库提供的那样在实时数据库中使用数组进行搜索。 云示例:

.collection("bids")
.where("title", "array-contains-any", ["xx", "yy", "zz"])

在上面的查询中,我得到了标题为 xxyyzz 的所有出价。 我们如何在 firebase 实时数据库中进行这样的搜索。

2 个答案:

答案 0 :(得分:2)

实际上在实时数据库中没有像“数组包含”这样的东西。因为如果你有一个数组,你就必须像处理普通的 JavaScript 数组一样处理。

在你的情况下,你可以试试这个。

var ref = firebase.database().ref('/bids/title');
ref.once('value').then(function(snap) {
  var array = snap.val();
  for (var i in array) {
    var value = array[i]
    console.log(value);
    if (value == 'xx') { ... }
  }
});

答案 1 :(得分:0)

实时数据库中没有等效的操作。

此类用例的常见方法是设置从投标标题到投标的附加数据结构映射,如下所示:Firebase query if child of child contains a value

然后,您可以使用单独的查询读取每个标题的出价 ID,通过另一个调用查找每个出价的其他属性,然后将所有结果合并到您的客户端应用程序代码中。这并不像您最初预期的那么慢,因为 Firebase pipelines the requests 通过单个 websocket 连接。