在Firebase数据库中保存日期

why*_*ent 4 android firebase firebase-realtime-database

根据我的Android应用程序中的日期对一些数据进行排序.它存储如下:

Map<Year, Map<Month, Map<Day, Stuff>>>
Run Code Online (Sandbox Code Playgroud)

年,月和日只包含整数.这不能保存到Firebase数据库,因为它是一个具有非字符串键的映射.我想把它弄平并把它变成Map.对数据结构的巨大妥协,因为它允许前一个数据不允许(也不应该)允许的数据.但是,Date不是String.我试过这样的事情:

String key = String.valueOf(date.getTime());
Run Code Online (Sandbox Code Playgroud)

然后使用数据结构:

Map<String, Stuff>
Run Code Online (Sandbox Code Playgroud)

也不起作用,它似乎使用了String在Firebase数据库中不能拥有的非法字符.那么,我将如何进行这项工作呢?很感激帮助.

小智 8

我建议你创建一个如下所示的结构:

...
date:{
   day:1,
   month:04,
   year:2016,
   timestamp:12345679979 //in milliseconds
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以轻松索引安全规则中的时间戳,通过Child执行查询并使用start At和endAt方法使用过滤器,您可以在其中定义定义范围的时间戳