2015-10-30 43 views
0

我基本上要做到這一點:如何在Firebase中訂購兒童時按優先順序排序?

var ref = new Firebase("[myapp].firebaseio.com"); 
var things = ref.child("things"); 
var thingsQuery = things.orderByPriority().orderByChild("owner").equalTo("[ownerKey]") 
var angularReadyThings = $firebaseArray(thingsQuery); 

我使用火力地堡的查詢能力orderByChild()和equalTo()來獲取數據的一個子集,並從該查詢創建$ firebaseArray顯示的一部分特定節點下的東西列表。用戶可以通過拖放列表來設置每個項目的$優先級,並且我可以正確保存優先級,但是數據不是按照優先級(我認爲是有意義的)重新排序。我不能像orderByChild()一樣使用orderByPriority(),就像我上面在第3行(不支持多個orderBys)一樣。在我的ng-repeat上使用orderBy:'$ priority'過濾器(我正在使用angular)工作,直到我拖放列表爲止,此時這些項目會恢復到它們的檢索(無序)狀態。

有沒有一種方法可以使用orderByChild()和equalTo()並獲得按Firebase優先級排序的結果?

回答

2

Firebase只能按單一條件進行排序/過濾,無論是關鍵,子屬性還是優先級。

看起來你只想過濾一個子屬性,然後按優先順序排序。在這種情況下,您可以使用Firebase查詢執行ref.orderByChild("owner").equalTo(ownerKey)並重新訂購客戶端

備註:沒有理由繼續使用Firebase的舊優先級進行排序。只要添加一個名爲子屬性的具有相同的值就更清楚了。

+0

那麼'onChildMoved'就會過時? –