【问题标题】:How do you sort by priority when ordering by child in Firebase?在 Firebase 中按孩子排序时如何按优先级排序?
【发布时间】:2016-01-31 08:47:48
【问题描述】:

我基本上想这样做:

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 以显示特定节点下事物列表的一部分。用户可以拖放列表以在每个项目上设置 $priority,我可以正确保存优先级,但是数据不会按优先级排序(我想这是有道理的)。我不能将 orderByPriority() 与 orderByChild() 一起使用,就像我在第 3 行上面的那样(不支持多个 orderBys)。在我的 ng-repeat 上使用 orderBy:'$priority' 过滤器(我为此使用 angular)一直有效,直到我拖放对列表进行排序,此时项目恢复到它们的检索(无序)状态。

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

【问题讨论】:

    标签: angularjs firebase


    【解决方案1】:

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

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

    旁注:几乎没有理由仍然使用 Firebase 的旧优先级进行排序。只需添加具有相同值的 named 子属性会更清晰。

    【讨论】:

    • 那么onChildMoved 会过时吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多