在Firebase中按孩子订购时,如何按优先级排序?

时间:2015-10-30 20:17:20

标签: angularjs 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);

我使用Firebase的查询功能orderByChild()和equalTo()获取数据的子集,并从该查询创建$ firebaseArray,以显示特定节点下的事物列表的一部分。用户可以拖放列表以设置每个项目的优先级,我可以正确保存优先级,但数据按优先级排序(我觉得有意义) )。我不能使用orderByPriority()和orderByChild(),就像我在第3行上面所说的那样(不支持多个orderBys)。使用orderBy:' $ priority'对我的ng-repeat进行过滤(我使用角度为此)直到我拖放对列表进行排序,此时项目将恢复为其检索(无序)状态。

有没有办法使用orderByChild()和equalTo()并从Firebase获得按优先级排序的结果?

1 个答案:

答案 0 :(得分:2)

Firebase只能按单个条件排序/过滤,无论是密钥,子属性还是优先级。

您似乎只想按子属性进行过滤,然后按优先级排序。在这种情况下,您可以使用Firebase查询执行ref.orderByChild("owner").equalTo(ownerKey)并执行重新排序客户端

旁注:没有理由继续使用Firebase的旧优先级进行订购。只需添加一个具有相同值的命名的子属性就更清楚了。