Firebase -查询子项的子项

qoefvg9y  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(90)

Firebase实时数据库结构


的数据
我想搜索inviteCode = 271429的游戏。*有多个类别,所以我无法知道这个邀请代码是否属于 Maths
我试着使用.orderByChild(),但这对child的child不起作用。只有当我知道我需要看数学时,它才能起作用。
我试图寻找一种方法,如果我只能得到密钥的‘游戏‘,然后我可以循环在这些密钥寻找代码。我最终找到了浅,但似乎它只可用于休息。我试图在Flutter中实现这一点。
我不想下载完整的数据然后搜索,因为数据大小可能很大。
查询这种数据库结构的最佳解决方案是什么?我应该改进数据库结构吗?请记住,需要限制对数据库的调用次数,以避免过多的数据调用,因为我相信Firebase基于它收费。

zkure5ic

zkure5ic1#

Firebase实时数据库查询在一个平面节点列表上工作。要排序/筛选的键/值必须位于搜索位置的每个直接子节点下的固定路径上。
这里最简单的解决方案似乎是添加一个额外的数据结构,将inviteCode值Map回它们的类别(可能还有关于它们的其他数据)。这有时被称为反向索引,在NoSQL数据库中非常常见。
所以你有:

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

字符串
您可以通过多路径更新和安全规则来保持此和原始数据结构同步。
有关这方面的更多信息,请参阅:

相关问题