【问题标题】:Firebase - Query Child of ChildFirebase - 查询子级的子级
【发布时间】:2021-08-22 03:19:39
【问题描述】:

我有以下 Firebase 实时数据库结构。

我想搜索一个邀请码 = 271429 的游戏。有多个类别,所以我无法知道这个特定的邀请码是否属于数学

我尝试使用 .orderByChild() 但这对孩子的孩子不起作用。只有当我知道我需要查看数学时,它才有效。

我试图寻找一种方法,如果我只能获得“游戏”的键,然后我可以循环输入这些键以查找代码。我最终找到了shallow,但它似乎仅适用于 REST。我正在尝试在 Flutter 中实现这一点。

我不想下载完整的数据然后搜索,因为数据量可能很大。

请告知查询此类数据库结构的最佳解决方案是什么。并建议我是否应该改进数据库结构,如果是,请建议记住需要限制对数据库的调用次数以避免过多的数据调用,因为我相信 Firebase 会根据它向您收费。

提前谢谢你。

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案1】:

    Firebase 实时数据库查询适用于平面节点列表。您排序/过滤的键/值必须位于您搜索位置的每个直接子节点正下方的固定路径中。

    这里最简单的解决方案似乎是添加一个额外的数据结构,将inviteCode 值映射回它们的类别(可能还有关于它们的其他数据)。这有时被称为倒排索引,在 NoSQL 数据库中很常见。

    所以你有:

    invoteCodesLookup: {
      "271429": {
        category: "Maths",
        ...
      }
    }
    

    您可以使这个和原始数据结构与多路径更新和安全规则保持同步。

    有关更多信息,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多