[英]iOS - Firebase Filter query
我在 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")
})
但不能得到结果?
当您对 Firebase 执行查询时,您会得到一个FIRDataSnapshot
,其中包含每个结果的三条信息:
当您调用snapshot.value
,快照将转换为字典。 不幸的是,该字典只能保存键值对,因此您会丢失有关节点位置的信息。 因此,虽然快照中的数据实际上已正确排序,但您将这些信息扔掉了。
解决方案是使用FIRDataSnapshot
的内置children
属性以正确的顺序循环遍历子节点。 有关查询的Firebase 文档包含如何执行此操作的示例:
_commentsRef.observeEventType(.Value, withBlock: { snapshot in
for child in snapshot.children {
...
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.