gpt4 book ai didi

iOS - Firebase 过滤器查询

转载 作者:行者123 更新时间:2023-11-28 09:43:20 25 4
gpt4 key购买 nike

我在 Firebase 中得到了分数节点:

在分数节点下,我的数据结构如下:

{
"jjTO29ziQ2SjrH5PFzY7ZMpSgjq1-Kak6FCyGtdy_kcEPd4K" = {
jjTO29ziQ2SjrH5PFzY7ZMpSgjq1 = "-Kak6FCyGtdy_kcEPd4K";
score = 5;
};
"jjTO29ziQ2SjrH5PFzY7ZMpSgjq1-KbE_pgfUsukOm4uW0bx" = {
jjTO29ziQ2SjrH5PFzY7ZMpSgjq1 = "-KbE_pgfUsukOm4uW0bx";
score = 4;
};

问题:我可以按分数过滤数据吗?

我试过:

FIRDatabase.database().reference().child("scores").queryOrdered(byChild: "score").observeSingleEvent(of: .value, with: { (snapshot) in

debugPrint(snapshot.value ?? "nil")

})

但是得不到结果?

Picture 1

最佳答案

当您对 Firebase 执行查询时,您会得到一个 FIRDataSnapshot,其中包含每个结果的三个信息:

  • 它的 key
  • 它的值(value)
  • 它相对于其他节点的位置

当您调用 snapshot.value 时,快照会转换为字典。不幸的是,该字典只能保存键值对,因此您会丢失有关节点位置的信息。因此,虽然快照中的数据实际上已正确排序,但您正在丢弃该信息。

解决方案是使用 FIRDataSnapshot 的内置 children 属性以正确的顺序遍历子节点。 Firebase documentation on querying有这个如何做到这一点的示例:

_commentsRef.observeEventType(.Value, withBlock: { snapshot in
for child in snapshot.children {
...
}
})

关于iOS - Firebase 过滤器查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850535/

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