2017-07-19 28 views

回答

2

你可以用火力數據庫orderByChildequalTo方法。從火力參考

OrderByChild:

orderByChild orderByChild(路徑)返回firebase.database.Query

它生成由指定的子鍵排序的新查詢對象。

查詢一次只能按一個鍵進行排序。在同一個查詢中多次調用orderByChild()是一個錯誤。從火力參考

equalTo:

equalTo(值,鍵)返回firebase.database.Query

創建查詢,其包括包含指定值的兒童。

使用startAt(),endAt()和equalTo()允許我們爲查詢選擇任意的起點和終點。

可選的鍵參數可用於進一步限制查詢的範圍。如果已指定,則具有完全指定值的子項也必須具有指定的鍵作爲其鍵名。這可用於過濾具有相同值的許多匹配的結果集。

Firebase查詢允許您通過任何子密鑰即時訂購您的數據。但是,如果您事先知道您的索引是什麼,您可以通過安全規則中的.indexOn規則來定義它們,以獲得更好的性能。

代碼爲您的問題:

const requestRef = firebase.database().ref('request'); 
requestRef.orderByChild('apply') 
      .equalTo(true) 
      .once('value') 
      .then(snapshot => snapshot.val()) 
      .then((data) => {// your handle code here}) 

完整文檔here

+0

謝謝,男人! –

1

是,你可以在你的情況下使用OrderByChild爲好。這應該工作。

var query = firebase.database().ref('request').orderByChild('apply').equalTo('true'); 
query.once('value', function (snapshot) { 
    console.log(snapshot.val()) //contains all users that has apply as true 
}) 
+0

這確實有效,儘管我建議循環播放結果而不是記錄它們(以確保它們保持順序)。請參閱https://firebase.google.com/docs/database/web/lists-of-data#listen_for_value_events此外:嚴格來說,這不再是'ref',而是一個查詢。 :-) –

+0

是的,你是對的。我更新了我的答案。謝謝。 :-) –

+0

謝謝,夥計! –