【问题标题】:Android Firebase multiple sortAndroid Firebase 多重排序
【发布时间】:2017-05-29 03:16:21
【问题描述】:

我有一个关于 Firebase 排序的问题。

我有下一个数据库:

{
    "-Ka8xxTgyFB8yYKH50j_addclose" : {
        "number" : 0,
        "point" : 949739,
        "timestamp" : 14824078463440,
        "username" : "Test 16062"
    },
    "-Ka8xzKecpbPr46Kx9gl" : {
        "number" : 0,
        "point" : 1480851,
        "timestamp" : 14842078463441,
        "username" : "Test 13599"
    }
}

我想显示按点排序的数据。 但我只需要今天创建的行。

如果我过滤时间戳的行:

return databaseReference
                .child("list")
                .orderByChild("timestamp")
                .endAt(end.getTime());

endAt 运行良好。仅列出今天的行。 但是...现在我需要按point 排序。

我该怎么做?

有什么想法可以在客户端更改数据库或排序我的列表吗?

非常感谢!

【问题讨论】:

  • Firebsae 数据库查询可以按/过滤一个属性进行排序。见stackoverflow.com/questions/26700924/…
  • 是的,但是,如果您需要使用过滤器,那么首先您需要对其进行排序。所以:orderByChild("timestamp").endAt(exampletimestamp).orderByChild("point") 不好,因为在一个查询中定义了 2 个 orderBy。

标签: java android sorting firebase firebase-realtime-database


【解决方案1】:

您需要对所有数据客户端进行排序,因为每个查询只能有一个 orderBy 列。

如果您需要对服务器端进行双重排序,则必须更新您的数据库以拥有一个包含时间戳和点的组合键。

【讨论】:

  • 是的,我想在客户端对其进行排序,但我对此一无所知。我不能使用带时间戳的组合键,因为这个时间戳是 {sv.:timestamp} 。所以在android中我使用它:ServerValue.TIMESTAMP。如果我尝试将它与点连接起来,那么 FireBase 不会解释它。
  • 比值是:{sv. : 时间戳}_1231231
  • 那么你有一个新问题,我如何订购一个在android中说的列表客户端。
  • 我可以在android中对数据进行排序。但是这个 Firebase 列表对我来说太新了。我看到带有物品的适配器。但我不能交换物品。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 2017-09-01
  • 2020-01-30
相关资源
最近更新 更多