【问题标题】:Firebase - Query by nested key [duplicate]Firebase - 按嵌套键查询[重复]
【发布时间】:2018-06-30 21:56:48
【问题描述】:

我有这样的数据结构:

UserOrders
    unique-userid-100
        unique-orderid-456
            [order details here] 
        unique-orderid-123
            [order details here]
    unique-userid-200
        unique-orderid-789
            [order details here]
    ....

对于管理功能,我需要使用 orderid 查询(不知道 userid)并获取订单详细信息?我怎样才能有效地做到这一点?

我试过了,但我得到了 UserOrders 下的所有数据。

ref.child("UserOrders").queryOrdered(byChild: "unique-orderid-456").observeSingleEvent(...

【问题讨论】:

  • 您想具体获取哪些数据?一个订单?
  • 是的,我想获取订单 ID 的订单详细信息。

标签: swift firebase firebase-realtime-database


【解决方案1】:

使用 Firebase API,我们只能过滤一级嵌套数据。

因此,首先需要将用户映射到那里的订单,例如:-

用户订单

unique-userid-100

    unique-orderid-456 = true
    unique-orderid-123 = true
unique-userid-200
    unique-orderid-789 = true
....

然后使用查询找到订单的用户 ID:-

let ref  = FIRDatabase.database().reference()
        ref.child("UserOrders").queryOrdered(byChild: "unique-orderid-456").queryEqual(toValue: true).observeSingleEvent(of: .value, with: { (snapshot) in
  // here userid will be obtained for an order, using this ref/<userid>/unique-orderid-456 can be observed to get order details

})

这是一种变通方法,但如果您可以重新考虑重构数据,那将是一件好事

请参考类似的:-Firebase Query Double Nested

【讨论】:

  • 引用的帖子说“深度查询现在是 Firebase 中的一项功能”
  • 在路径已知的情况下可以进行深度查询,如这篇文章:firebase.googleblog.com/2015/09/…,没有已知的用户 ID,我相信这是不可能的。
猜你喜欢
  • 2017-05-28
  • 1970-01-01
  • 2020-11-18
  • 2017-04-19
相关资源
最近更新 更多