2017-05-24 46 views
0

如何过滤条件上的Firebase查询。我曾尝试这个代码如何过滤Firebase中的搜索iOS

let productsQuery = FIRDatabase.database().reference().child("Products").queryLimited(toFirst: 10) 
    //method 1 
    productsQuery.queryEqual(toValue: "Pending", childKey: "Status") 
    //method 2 
    productsQuery.queryOrdered(byChild: "Status").queryStarting(atValue: "Pending").queryEnding(atValue: "Pending") 

但它总是返回整套这是巨大的(超过10,000项)

我想只获取对象在“状态” =“待定”

Backend shown here

我确定在Firebase中会存在这样的基本过滤。请告诉我。

+0

解决方案:我之后的查询条件,而我一直在启动时有下一行的观察并没有INITING的.observeSingleEvent。这是问题所在。 – Rijiva

+0

你应该这样做,在文档中没有提到:'lastProducts.queryOrdered(byChild:“Status”)。queryEqual(toValue:“Pending”)。queryLimited(toFirst:10).observeSingleEvent(of:.value,with :{(snapshot:FIRDataSnapshot)in }' – Rijiva

回答

0

您需要结合queryOrdered(byChild:)queryEqual(toValue:)这种方式并使用.observeEvent

let productsQuery = FIRDatabase.database().reference().child("Products") 
productsQuery.queryOrdered(byChild: "Status").queryEqual(toValue:"Pending") 
      .queryLimited(toFirst: 10).observeSingleEvent(of: .value, with: { (snapshot : FIRDataSnapshot) in 


}) 
+0

仍然返回整个集合 – Rijiva

+0

@Rijiva检查编辑后的答案并在末尾放置'queryLimitedToFirst',如果它仍然不起作用显示您的观察代码 –

+0

这是一个语法错误。我知道了,基本上我必须在查询后马上启动.observeSingleEvent。我也会在这里发布答案。谢谢你的努力Nirav – Rijiva