Firebase数据库:搜索特定项目

时间:2017-02-09 19:17:11

标签: javascript firebase firebase-realtime-database

我正在构建一个订购工具。每个订单都有id,这是我使用push方法从Firebase获得的唯一标识符。我的问题是:让我们说一个标有" Order"的文本字段。在我的页面旁边有一个标题为"查找"。

的按钮

检索(甚至可能构建)数据的最佳方法是什么?我熟悉Firebase数据库的索引。基本上,我想启用搜索特定订单。可能有成千上万。以下是正确的吗?

var wantedOrder = firebase.database().ref('orders').equalTo("My Input Text");

  "orders": {
    "abc123456": {
      "name": "My First Fake Order",
      "members": {
        "alovelace": true,
        "ghopper": true,
        "eclarke": true
      },
    "abc123457": {
      "name": "My Second Fake Order",
      "members": {
        "alovelace": true,
        "ghopper": true,
        "eclarke": true
      }
    },
    ...
  }

Firebase规则

{
  "rules": {
    "orders": {
      ".indexOn": ["name"]
    }
  }
}

2 个答案:

答案 0 :(得分:2)

您需要在equalTo()startAt()endAt()之前使用orderBy *()类型的函数。

在您的特定情况下,我会使用

var wantedOrder = firebase.database().ref('orders').orderByChild('name').equalTo('yourText').on(listener you want.....)

这将返回您搜索的完全匹配....

如果您想采用更灵活的方式,请使用startAt()endAt()

答案 1 :(得分:0)

我可以建议你实现你想要的两种方式。

  1. (如果您有大量数据,效率不高)您可以通过“订单”节点的ValueEventListener获取整个数据,然后循环搜索关键字的每组数据。

  2. 看看这个链接,他们有与您相似的数据集。 Querying firebase through substring