2017-05-24 85 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