在Firebase中查询孙子属性

时间:2017-01-30 13:05:25

标签: rest firebase firebase-realtime-database

我尝试为在线商店提供Firebase实时数据库结构。 商店应该有一个产品集合,每个产品可以属于一个或多个类别。是否可以构建查询以使用单个HTTP请求获取computers类别中的所有产品(假设我使用Firebase REST API)?以下是一个示例数据:

{
  "products": {
    "-KaXxv2xD9WaIqHMsHYM": {
      "title": "Item 1",
      "categories": {
        "electronics": true,
        "computers": true
      }
    },
    "-KaXyvdw5gmuBmGi5unb": {
      "title": "Item 2",
      "categories": {
        "electronics": true
      }
    },
    "-KaXyyyzmP9Y6askhLdx": {
      "title": "Item 3",
      "categories": {
        "computers": true
      }
    }
  }
}

我还试图为categories使用数组,但看起来阵列支持在Firebase中非常有限,应该避免使用它们。

更新

此查询有效:

GET /products.json?orderBy="categories/computers"&equalTo=true

但它需要每个类别的索引:

{
  "rules": {
    "products": {
      ".indexOn": ["categories/computers", "categories/electronics"]
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您应该有一个额外的categories节点,其中包含products列表。这样可以更轻松,更有效地访问特定类别的产品。

类似的方法用于Firebse样本。 See code

    childUpdates.put("/posts/" + key, postValues);
    childUpdates.put("/user-posts/" + userId + "/" + key, postValues);

他们在postsuser-posts个节点保存了相同的数据。