如何将ServerValue.TIMESTAMP存储为Firebase数据库中的字符串

时间:2018-04-03 07:48:20

标签: android firebase firebase-realtime-database timestamp

我有一个firebase recyclerview,我想查询OrderByChild中的数据,例如TOPWEEK或TOPDAYS,以便我计划将ServerValue.TIMESTAMP与星号一起组合,例如

  

“Combin”:“1522741072_5”

第一个值是时间戳第二个值是星数。但是如果我每当新的一个出现时就这样做,那么星级计数就会被忽略(因为时间戳是以毫米为单位)。我认为我应该从时间戳中削减一些价值。像这样:

/storage/emulated/0/AUDIO_:20180403_151649.3gp

但这是不可能的,因为我无法将时间戳存储为firebase数据库中的字符串。这是我的模特课

String.valueOf(ServerValue.TIMESTAMP).substring(0,4)

有没有解决方案

1 个答案:

答案 0 :(得分:0)

根据您的上一条评论,我了解star counts不包含固定值,可以由用户递增。在这种情况下,您的解决方案将无法运行。还有另一个解决方案有两个单独的属性,但遗憾的是,Firebase实时数据库不支持对多个属性的查询,仅支持对单个子属性的查询。此外,您应该考虑扩充您的数据结构以允许反向查找,因为在这种情况下您将需要许多节点。

如果我是你,每次我都应该向数据库中添加一个新项目,我将使用push()方法生成一个基于时间的随机密钥作为项目的关键字。因此,默认情况下,所有项目都将按创建时间排序。在这种情况下,您只需要使用如下所示的查询:

Query query = rootRef.child("results").orderByChild("reuslt");

不要忘记将result属性的值设置为IntegerLong,而不是String,因为在字符串的情况下,项目是订购lexicographically

您可以考虑查看允许链接查询的Cloud Firestore