如何有条件地从 Firebase 实时数据库读取数据
How to read data from Firebase Realtime Database conditionally
假设我的 Firebase 实时数据库中有以下结构:
- users
- g123
- john
- age: 30
- active: 1
- mike
- age: 20
- active: 0
- johanna
- age: 30
- active: 1
- g456
- jake
- age: 20
- active: 1
- maria
- age: 20
- active: 0
- g789
- elli
- age: 20
- active: 0
- joe
- age: 20
- active: 0
我需要获取 child:s 的列表,其中至少有 1 个用户 active 设置为 1。
因此,在上面的示例中,g123 中有 2 个活跃用户,g456 中有 1 个活跃用户。 g789.
没有活跃用户
我如何构建对 Firebase 实时数据库的查询(最好使用 Python),它将 return g123 和 g456?
Firebase 实时数据库查询在平面节点列表上工作,order/filter 上的值必须位于每个直接子节点下的固定路径中。所以你想要的那种查询,在这个数据结构上是不可能的。
一个常见的解决方法是将 activeCount
存储在每个直接子节点下,并在每次写入时更新它。
- users
- g123
activeCount: 3
- john
- age: 30
- active: 1
- mike
- age: 20
- active: 0
- johanna
- age: 30
- active: 1
- g456
activeCount: 0
- jake
- age: 20
- active: 1
- maria
- age: 20
- active: 0
- g789
activeCount: 3
- elli
- age: 20
- active: 0
- joe
- age: 20
- active: 0
然后您可以 order/filter 在此 activeCount
。
另见:
- Firebase Query Double Nested
假设我的 Firebase 实时数据库中有以下结构:
- users
- g123
- john
- age: 30
- active: 1
- mike
- age: 20
- active: 0
- johanna
- age: 30
- active: 1
- g456
- jake
- age: 20
- active: 1
- maria
- age: 20
- active: 0
- g789
- elli
- age: 20
- active: 0
- joe
- age: 20
- active: 0
我需要获取 child:s 的列表,其中至少有 1 个用户 active 设置为 1。
因此,在上面的示例中,g123 中有 2 个活跃用户,g456 中有 1 个活跃用户。 g789.
没有活跃用户我如何构建对 Firebase 实时数据库的查询(最好使用 Python),它将 return g123 和 g456?
Firebase 实时数据库查询在平面节点列表上工作,order/filter 上的值必须位于每个直接子节点下的固定路径中。所以你想要的那种查询,在这个数据结构上是不可能的。
一个常见的解决方法是将 activeCount
存储在每个直接子节点下,并在每次写入时更新它。
- users
- g123
activeCount: 3
- john
- age: 30
- active: 1
- mike
- age: 20
- active: 0
- johanna
- age: 30
- active: 1
- g456
activeCount: 0
- jake
- age: 20
- active: 1
- maria
- age: 20
- active: 0
- g789
activeCount: 3
- elli
- age: 20
- active: 0
- joe
- age: 20
- active: 0
然后您可以 order/filter 在此 activeCount
。
另见:
- Firebase Query Double Nested