【问题标题】:How to read data from Firebase Realtime Database conditionally如何有条件地从 Firebase 实时数据库中读取数据
【发布时间】:2022-02-08 01:09:51
【问题描述】:

假设我的 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)的查询以返回 g123g456

【问题讨论】:

    标签: python firebase firebase-realtime-database


    【解决方案1】:

    Firebase 实时数据库查询适用于节点的平面列表,并且要排序/过滤的值必须位于每个直接子节点下的固定路径。所以你想要的那种查询,在这个数据结构上是不可能的。

    一种常见的解决方法是将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
    

    然后您可以对此activeCount 进行排序/过滤。

    另见:

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    相关资源
    最近更新 更多