我正在制作一个集成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/
的数据我可以查询一些高度满足以下条件的恐龙:
高度*高度+长度*长度> 100(仅举例)
如果可能,我该如何使用iOS Firebase SDK执行此操作?
使用iOS Firebase SDK查询数据的参考 https://www.firebase.com/blog/2014-11-04-firebase-realtime-queries.html
答案 0 :(得分:2)
(请注意,问题已更改,因此我之前提供的答案是正确的,对于新问题不再有效)
新答案是否定的,您不能同时直接查询两个值。
然而,有很多方法可以解决这个问题,因为你使用的是iOS,所以很容易:
1)查询所有恐龙以将它们加载到对象中并将它们存储在数组中 2)根据你的方程式制作一个NSPredicate来拉出一个数组
您应该考虑如何在firebase中对数据进行建模,因为如果您正确地对其进行模态化,您将能够查询Firebase以获取所需内容,而不是在客户端处理它。
哦,看到这篇文章
Filter and sort on multiple values with Firebase
对于在原始问题中发布的等式:height * 2 + 10> 100
答案是肯定的,你可以这样做
使用静态数字或通过等式定义高度,然后在.queryStartingAtValue参数中使用它。
说baseHeight = 45或baseHeight =(100-10)/ 2或baseHeight = 2 ^ 5
CELERYD_CONCURRENCY = 1
您可以通过添加.queryEndingAtValue进一步缩小搜索结果范围,然后为您提供一系列高度
ref.queryOrderedByChild("height").queryStartingAtValue(baseHeight)
.observeEventType(.ChildAdded, withBlock: { snapshot in
println(snapshot.key)
})