我基本上想要这样做:
var ref = new Firebase("[myapp].firebaseio.com");
var things = ref.child("things");
var thingsQuery = things.orderByPriority().orderByChild("owner").equalTo("[ownerKey]")
var angularReadyThings = $firebaseArray(thingsQuery);
我'm using Firebase'的查询功能orderByChild()和equalTo()获取数据子集并从该查询创建$ firebaseArray以显示特定节点下的事物列表的一部分 . 用户可以拖放列表以在每个项目上设置$ priority,并且我可以正确保存优先级,但数据 doesn't 按优先级排序(我认为这是有意义的) . 我可以't use orderByPriority() along with orderByChild() like I have it above on line 3 (multiple orderBys aren' t支持) . 在我的ng-repeat上使用orderBy:'$priority'过滤器(我正在使用angular),直到我拖放对列表进行排序,此时项目将恢复为其检索(无序)状态 .
有没有办法使用orderByChild()和equalTo()并从Firebase获得按优先级排序的结果?
1 回答
Firebase只能按单个条件排序/过滤,无论是密钥,子属性还是优先级 .
您似乎只想按子属性进行过滤,然后按优先级排序 . 在这种情况下,您可以使用Firebase查询执行
ref.orderByChild("owner").equalTo(ownerKey)
并执行重新排序客户端旁注:没有理由继续使用Firebase的旧优先级进行订购 . 只需添加具有相同值的命名子属性就更清楚了 .