所以我有一個運動應用程序,處理比賽和錦標賽數據。 我必須使用相同的數據的兩個顯示器:Firebase:結合過濾和快速排序
- 今後所有從某一個冠軍
的數據結構是這樣
- championships
- libertadores
- name: Libertadores da América
- matches
- 2j6g42kjhg62
- champ: libertadores
- time: 1433962855
- <data> //teams, scores, stadium and so on
現在匹配
matchesRef.queryOrderedByChild("time").queryStartingAtValue(currentTimestamp)
.queryLimitedToFirst(20)
.observeEventType(.ChildAdded, withBlock: { (snapshot) in
// code
})
但是,因爲你不能使用多個queryOrderedByChild
我堅持把這與冠軍的過濾結合起來。
我想過改變我的數據結構來支持像/championship/matches/<matchID>
這樣的事情,但這會讓我很難顯示所有未來的匹配。
不過濾不是在這裏,所以我怎麼能達到預期的效果?
你可以在代碼中過濾它嗎?我們非常成功地查詢了我們想要的數據組(20個未來比賽),然後通過NSPredicate數組搜索縮小爲一個子集(錦標賽)。這樣做的好處是,如果用戶想要查看一個數據子集(比如說不同的冠軍),那麼您不必再次訪問服務器,只需更改您的NSPredicate搜索條件即可。而且,如果您正在觀察用於添加/編輯/刪除的匹配節點,則您的「主」匹配數組將始終保持最新狀態。 – Jay
我們已經考慮過了,但是打到服務器將是我們的第一選擇,因爲我們正在查詢未來的20場比賽,並且當用戶過濾冠軍時,我們希望從該冠軍賽中接下來的20場比賽,而不是說3 .. –
唯一的選擇是將想要查詢的值組合到一個屬性中。例如。 ''time_and_champ「:」1433962855_ libertadores「'。在任何地方都不可能,但在可能的情況下,這可能是你最好的選擇。另見http://stackoverflow.com/questions/30654872/how-to-query-based-on-multiple-conditions-in-firebase/30655736#30655736 –