【问题标题】:Firebase orderByKey doesn't workFirebase orderByKey 不起作用
【发布时间】:2016-06-14 10:06:05
【问题描述】:

我有一个对象。

{
featured-routines: {
 1465895195: "-LALALA"
 1465898164: "-KK7pEednXoUBszpqCmg"
 1465898185: "-KK9xFyA8skOvSLhaHWq"  
}
}

我尝试通过调用来获取它们:

Database.getFeaturedReference()
        .orderByKey()
        .addValueEventListener(routineListener);

结果应该按升序排列,但事实并非如此。这完全是随机的。它甚至与仪表板 GUI 中显示的顺序不同:

{ key = featured-routines, value = {1465898185=-KK9xFyA8skOvSLhaHWq, 1465895195=-LALALA, 1465898164=-KK7pEednXoUBszpqCmg} }

有人知道如何按正确的顺序排列它们吗?

【问题讨论】:

  • "key = featured-routines" ...所以,它是按键排序的...只有一个键:“featured-routines” ...换句话说,您获取的数据级别错误
  • 那么我该如何定位子键?
  • 我什至将对象重构为" features-routines { 1465898185 { features_at: 1465898185,routine_id: "-KK9xFyA8skOvSLhaHWq" ], 1465898285 { features_at: 1465898285,routine_id: "-qKK7pEednXoUBsp 调用它们} :Database.getFeaturedReference().orderByChild("featured_at") 订单仍然混乱。
  • Database.getFeaturedReference() ... 是您的方法,它可以从 firebase 库中大量返回 Query 对象...如果我们不知道 Database.getFeaturedReference() 做了什么,很难说如何更改您的代码
  • 返回your_db.firebase.com/some_container/featured-routinesyour_db.firebase.com/some_container/

标签: android firebase firebase-realtime-database


【解决方案1】:

要按您请求的顺序处理孩子,您必须在您的ValueEventListener 中使用ChildEvenListenerDataSnapshot.getChildren()

    ValueEventListener routineListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot child : snapshot.getChildren()) {
                Systme.out.println(snapshot.getKey());
            }
        }
        ...
    });

【讨论】:

  • 所以没关系,当我记录整个快照时,数据看起来是随机顺序的?它会在客户端订购吗?
猜你喜欢
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 2018-09-18
  • 2018-06-26
相关资源
最近更新 更多