从 firebase 数组中检索数据

Retrieving data from firebase Array

我的 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. 获取 'itemOrdered' = 'def'
  3. 的所有记录

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

假设您使用 JavaScript SDK 访问 Firebase:

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

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

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

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

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

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 节点,每个子节点都是一个商品编号节点,然后关联购买该商品的用户 ID。