2016-03-03 30 views
-1

我正在制作集成Firebase SDK的iOS。我有一个关于它的查询数据的问题。在iOS上查询复杂条件的数据Firebase SDK

例如,我从https://dinosaur-facts.firebaseio.com/

我可以查询其高度满足一些恐龙以下条件具有从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 
    }, 
    ... 

数据上火力地堡

源一个JSON数据高度*高度+长度*长度> 100(例如)

如果可能,我如何使用iOS Firebase SDK来完成此操作?

有关查询使用的是iOS火力地堡SDK数据参考 https://www.firebase.com/blog/2014-11-04-firebase-realtime-queries.html

+1

您能否将您的答案更新为实际Firebase数据结构的副本/粘贴而不是图片?您应该查看Firebase信息中心右上角的导出数据按钮,以使其更轻松。实际的数据可以帮助我们,帮助您,因为我们不必重新输入所有内容。 – Jay

+0

其实,我已经在Firebase上创建了应用,但我不知道它是否可以先解决我的问题,所以我想确保第一个 –

回答

2

(注意改变的问题,所以我以前哪个是正确的所提供的答案是否定的新问题不再有效)

新的答案不,你不能直接同时查询两个值。

不过,也有周围的方式和因为你使用的是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) 
}) 
+0

谢谢@Jay,您的解决方案非常棒,但是我已经用更复杂的新示例更新了我的问题条件。这种情况包含2个领域,他们聚在一起成为一个条件,这仍然是可能' –

+0

由于提供的答案是正确的,你应该已经接受它,然后创建一个新的问题,因为参数改变,这是一个不同的问题。 – Jay

+0

谢谢@Jay,我接受了你的答案,你能否接受新的答案,如果正确,我也会接受你的新答案 –