gpt4 book ai didi

swift - 在 Firebase 中查询以下 AutoID

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:09 24 4
gpt4 key购买 nike

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) })

这会因我在下面的评论中给出的错误而崩溃。

我试过:

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 都不会像上面描述的那样工作。

最佳答案

Firebase 数据库查询属性比您运行它们的位置更深一层。它们下不能包含动态路径。

由于您是从 /Results 进行查询,因此您可以根据 /Results/$id/PropertyName 下的属性进行排序/过滤。

要允许对 /Results/$id1/$id2/PropertyName 下属性的所有项目进行排序/过滤,您需要更改/扩充您的数据结构。例如:

ResultValues
-auto_generated_ID1_auto_generated_ID2_value1
value: abc
path: "auto generated ID/auto generated ID"
-auto_generated_ID1_auto_generated_ID2_value2
value: def
path: "auto generated ID/auto generated ID"

现在你可以查询:

ref.child("ResultValues")
.queryOrderedByChild("value")
.queryEqual(toValue: "def")
.observeSingleEvent(of: .value, with: {(snapshot) in
print(snapshot) })

关于swift - 在 Firebase 中查询以下 AutoID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com