【发布时间】:2017-04-04 10:23:27
【问题描述】:
Results
- auto generated ID
- auto generated ID
value1: abc
value2: def
我希望能够查询“value2”等于某个特定值的位置。我从一个参考开始:
let ref = FIRDatabase.database().reference().child("Results")
由于我不知道自动生成的 ID 以提供路径,我是否需要先获取它们才能确定可以使用 .queryEqualToValue 的值?如果是这样,我不只是抓取每条记录来寻找一个值,而不是使用某种索引来抓取那些value2 等于一个值的记录吗?
最后,我想要一个返回所有“记录”的查询,其中value2 等于某个值。感觉就像我需要遍历每条记录才能做到这一点。我觉得我在这里错过了一些东西。
更新:
我试过了:
self.ref.queryOrderedByKey().queryEqual(toValue: "def", childKey: "value2").observeSingleEvent(of: .value, with: {(snapshot) in
print(snapshot) })
这会因我在下面的 cmets 中给出的错误而崩溃。
我试过了:
self.ref.queryOrdered(byChild: "value2").queryEqual(toValue: "def").observeSingleEvent(of: .childAdded, with: {(snapshot) in
这永远不会执行闭包。如果我将观察者更改为".value"它返回null。
如果我这样做:
self.ref.queryOrdered(byChild: "value2").observeSingleEvent(of: .childAdded, with: {(snapshot) in
它实际上会正确地对数据进行排序。使用".value" 无法正确排序无论如何,添加queryEqual 然后无法按上述方式工作。
【问题讨论】:
-
认为您可能会发现 this 对您的场景非常有用
-
我认为我从中得到的是,如果不遍历项目,您将无法做到这一点。
-
@C6Silver 我目前的情况与您的问题完全相同。你是怎么解决的?
-
@LanceSamaria - 请查看已接受的答案和我的后续 cmets。数据需要重组。
-
@C6Silver 嘿,感谢您的回复。我不知道如何组合两个自动 ID。我发现在具有 1 级的不同节点上复制该数据然后使用自动 ID 的组合更容易。
标签: swift firebase firebase-realtime-database