从firebase数组中检索数据

时间:2015-06-22 09:50:48

标签: firebase firebase-realtime-database

我的Firebase数组具有以下结构:

[
   {
  'userId': '12345',
  'itemOrdered' : 'abc',
  'status': 'pending'
   ...other attributes
   },
  {
  'userId': '6789',
  'itemOrdered' : 'def',
  'status' : 'pending',
   ...other attributes
   },
  {
  'userId': '12345',
  'itemOrdered' : 'def',
  'status' : 'complete',
   ...other attributes
   },

]  

我无法弄清楚如何检索以下数据:

  1. 使用userId = xxx
  2. 获取记录
  3. 获取'itemOrdered'='def'
  4. 的所有记录

    Firebase文档谈论使用orderByChild,但这没有多大意义。

2 个答案:

答案 0 :(得分:2)

假设您使用JavaScript SDK访问Firebase:

  1. ref.orderByChild('userId').equalTo('xxx')

  2. ref.orderByChild('itemOrdered').equalTo('def')

  3. 如果您正在尝试构建一个从用户def获取商品xxx订单的查询,那么Firebase的查询目前无法实现。查询多个属性的值的唯一方法是以允许所需查询的方式将它们组合在单个属性中。 E.g。

    1. ref.orderByChild('userId_itemOrdered').equalTo('xxx_def')

答案 1 :(得分:0)

根据您的平台,还有其他选项。

1) Query for the userId and then filter in code for the item you are looking for. 

2) Query for the userId and build another query based on those results.

3) Flatten your data!

例如:创建一个名为user_purchases的节点,每个子节点都可以是userId节点,用户购买了itemId(这样可以快速了解用户购买的项目)。或者创建一个items_purchased节点,每个子节点都是一个项目编号节点,然后是相关的userId购买该项目。