【发布时间】:2017-06-29 14:00:36
【问题描述】:
我有一个类似这样的 firebase 数据库结构
是否可以通过电子邮件地址查询“a@a.com”并检索键“1248769d7j8”及其父键“deaf7834jd8d7j-78”?
我的解决方案是让数据库结构更扁平。但是我想知道是否可以在不进行非规范化的情况下通过
更新:就我而言,124... 和 dea... 都是未知的唯一 ID
【问题讨论】:
-
不,这是不可能的。您可以在按子排序(例如
some/deep/property)和定义索引时指定深度路径,但所述路径的组件需要是已知名称(可以这么说)并且1248769d7j8似乎是一个未知的ID当您定义安全规则(用于索引)等时。 -
谢谢,我是这么认为的。将创建数据库的不同分支
-
@cartant 请看答案,因为这很容易做到。
-
@Jay 我应该说的更像是:不,不可能为您要进行的查询编制索引。我注意到您的回答没有使用 OP 的数据。如果是这样,您将有一个
queryOrdered(byChild: "1248769d7j8/email")在其中 - 显然无法索引。任何建议该方法的答案都应包含警告。 -
@cartant 不确定您所指的索引与答案无关。此外,更重要的是,答案同样适用于 OP 数据(刚刚对其进行了测试)——所有键名都是字符串,并且在 Firebase 中的处理方式相同——无论是“1247869d7j8”还是“详细信息”。也许我误解了评论。
标签: database firebase firebase-realtime-database