我正在尝试将Firebase时间戳另存为字符串,我正在使用实时数据库,我想根据节点的发布日期排列节点,并希望排除那些早于24小时的发布。 我的节点结构是这样的
"posts" : {
"b" : {
"text" : "5",
"timestamp" : "{.sv=timestamp}",
"uid" : "KpZvp0bhOlPJI3KKwe1AF7Apb2U2"
},
"a" : {
"text" : "hey",
"timestamp" : "1559912589250",
"uid" : "KpZvp0bhOlPJI3KKwe1AF7Apb2U2"
}
}
按日期排列帖子没有问题,但是当我想排除早于24小时的帖子时,那是我开始遇到麻烦的时候
firebaseDatabase.reference.child("posts").orderByChild("timestamp").startAt((System.currentTimeMillis() - 86400000))
“ startAt()”不需要很长或整数,只需要布尔值,字符串和双精度值即可。
这就是我创建节点的方式
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hey",
"timestamp" to ServerValue.TIMESTAMP)
)
我尝试将ServerValue.TIMESTAMP更改为字符串,但将其保存为“ {” .sv“:” timestamp“}”。我四处张望,发现如果我发送的地图索引名为“。 sv”,并具有“ timestamp”的值,以便数据库将其识别并用服务器时间戳替换该值 像这样
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hello",
"timestamp" to mapOf(".sv" to "timestamp")
时间戳记值将是服务器时间戳记,是一个长整数,因此基本上ServerValue.TIMESTAMP就像一个映射,这就是为什么当我尝试将其更改为字符串时,它给了我“ {” .sv“:” timestamp“ }”值。
那么如何将服务器时间戳保存为字符串?或者如何在不将其更改为字符串的情况下以长整数形式查询数据