将ServerValue.TIMESTAMP另存为字符串在实时数据库中

时间:2019-06-09 15:09:03

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

我正在尝试将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“ }”值。

那么如何将服务器时间戳保存为字符串?或者如何在不将其更改为字符串的情况下以长整数形式查询数据

0 个答案:

没有答案