在 iOS Firebase SDK 上查询条件复杂的数据
Posted
技术标签:
【中文标题】在 iOS Firebase SDK 上查询条件复杂的数据【英文标题】:Query data with complex condition on iOS Firebase SDK 【发布时间】:2016-03-03 17:44:26 【问题描述】:我正在制作一个集成 Firebase SDK 的 ios。我遇到了关于它的查询数据的问题。
例如,我在 Firebase 上有一个 JSON 数据
来源https://www.firebase.com/blog/2014-11-04-firebase-realtime-queries.html
"bruhathkayosaurus":
"appeared": -70000000,
"height": 25,
"length": 44,
"order": "saurischia",
"vanished": -70000000,
"weight": 135000
,
"lambeosaurus":
"appeared": -76000000,
"height": 2.1,
"length": 12.5,
"order": "ornithischia",
"vanished": -75000000,
"weight": 5000
,
...
来自https://dinosaur-facts.firebaseio.com/的数据
我可以查询一些高度满足以下条件的恐龙吗:
height * height + length * length > 100(仅举例)
如果可能,如何使用 iOS Firebase SDK 做到这一点?
关于使用 iOS Firebase SDK 查询数据的参考 https://www.firebase.com/blog/2014-11-04-firebase-realtime-queries.html
【问题讨论】:
您能否使用实际 Firebase 数据结构的副本/粘贴而不是图片来更新您的答案?您应该查看 Firebase 仪表板右上角的“导出数据”按钮,以使其更轻松。实际数据帮助我们,帮助您,因为我们不必重新输入所有内容。 其实我已经在 Firebase 上创建了应用,但是我想知道它是否可以先解决我的问题,所以我想先确定 【参考方案1】:(请注意问题发生了变化,因此我之前提供的正确答案对新问题不再有效)
新答案是否定的,不能同时直接查询两个值。
但是,有一些方法可以解决这个问题,而且由于您使用的是 iOS,这很容易:
1) 查询所有恐龙以将它们加载到对象中并将它们存储在数组中 2) 制作一个 NSPredicate 以根据您的方程式提取一个数组
您应该真正考虑如何在 Firebase 中对数据进行建模,因为如果您正确地对其进行模态化,您将能够查询 Firebase 以获取您想要的内容,而不是在客户端处理它。
哦,看看这篇文章
Filter and sort on multiple values with Firebase
对于原始问题中发布的方程式:高度 * 2 + 10 > 100
答案是肯定的,你可以这样做
使用静态数字或通过公式定义高度,然后在 .queryStartingAtValue 参数中使用它。
说 baseHeight = 45 或 baseHeight = (100-10) / 2 或 baseHeight = 2^5
ref.queryOrderedByChild("height").queryStartingAtValue(baseHeight)
.observeEventType(.ChildAdded, withBlock: snapshot in
println(snapshot.key)
)
您可以通过添加 .queryEndingAtValue 来进一步缩小结果范围,这将为您提供一个高度范围
maxHeight = baseHeight + 10
ref.queryOrderedByKey().queryStartingAtValue(baseHeight).queryEndingAtValue(maxHeight)
.observeEventType(.ChildAdded, withBlock: snapshot in
println(snapshot.key)
)
【讨论】:
感谢@Jay,您的解决方案很棒,但我已经用新的更复杂的示例条件更新了我的问题。这个条件包含2个字段,它们聚集成一个条件,还有可能吗? 既然提供的答案是正确的,你应该接受它,然后创建一个新问题,因为参数发生了变化,使它成为一个不同的问题。 谢谢@Jay,我接受了你的答案,你能回答新的吗,如果正确,我也会接受你的新答案 对不起,我看到了你的新答案以上是关于在 iOS Firebase SDK 上查询条件复杂的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?
Firebase iOS SDK 崩溃与 FIRInstallations validateAppOptions:appName