我有一个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)
有没有解决方案
答案 0 :(得分:0)
根据您的上一条评论,我了解star counts
不包含固定值,可以由用户递增。在这种情况下,您的解决方案将无法运行。还有另一个解决方案有两个单独的属性,但遗憾的是,Firebase实时数据库不支持对多个属性的查询,仅支持对单个子属性的查询。此外,您应该不考虑扩充您的数据结构以允许反向查找,因为在这种情况下您将需要许多节点。
如果我是你,每次我都应该向数据库中添加一个新项目,我将使用push()
方法生成一个基于时间的随机密钥作为项目的关键字。因此,默认情况下,所有项目都将按创建时间排序。在这种情况下,您只需要使用如下所示的查询:
Query query = rootRef.child("results").orderByChild("reuslt");
不要忘记将result
属性的值设置为Integer
或Long
,而不是String
,因为在字符串的情况下,项目是订购lexicographically
。
您可以考虑查看允许链接查询的Cloud Firestore。