java - 将 ServerValue.TIMESTAMP 保存为实时数据库中的字符串
问题描述
我正在尝试将 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()”不需要 long 或 integer,它只需要 boolean、strings 和 double 作为参数。
这就是我创建节点的方式
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hey",
"timestamp" to ServerValue.TIMESTAMP)
)
我尝试将 ServerValue.TIMESTAMP 更改为字符串,但将其保存为 "{".sv" : "timestamp"}" 我环顾四周,发现如果我发送带有名为 ".sv" 的索引的地图并且具有“时间戳”的值,以便数据库将识别它并用服务器时间戳替换该值,如下所示
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hello",
"timestamp" to mapOf(".sv" to "timestamp")
时间戳值将是作为长数字的服务器时间戳,所以基本上 ServerValue.TIMESTAMP 就像一张地图,这就是为什么当我尝试将其更改为字符串时它给了我 "{".sv" : "timestamp"}" 值.
那么如何将服务器时间戳保存为字符串呢?或者如何将数据查询为长数字而不将其更改为字符串
解决方案
推荐阅读
- android - 单击按钮时如何转换pdf中的图像和文本?
- r - 如何从数据集中过滤行,直到达到一定数量的行?
- python - 将一维数组重复到具有移位行的二维数组
- google-chrome-devtools - Chrome 94 DevTools 在进行内存分析时崩溃
- c# - 具有特定条件的电子邮件的正则表达式验证
- javascript - TypeError,不是 NodejS 中的函数错误
- reactjs - 切换开关时如何获取信息 React-Native
- microservices - 有没有办法在微服务中为多个存储库使用单个数据库上下文?
- java - 在 L2switch 上为 OpenDaylight Sodium-SR4 添加 2 个或更多操作
- python - Kivymd:如何在列表项中添加复选框而不创建自定义类?