时间戳作为“时间戳”保存到 Firestore 是不是正常?

Posted

技术标签:

【中文标题】时间戳作为“时间戳”保存到 Firestore 是不是正常?【英文标题】:Is it normal for timestamp to be saved into Firestore as "timestamp"?时间戳作为“时间戳”保存到 Firestore 是否正常? 【发布时间】:2018-06-22 09:09:23 【问题描述】:

我正在保存服务器值时间戳,如下所示:

let data : [String: Any] = ["userId": 9,
                            "name": "Elon Musk",
                            "timeCreated": ServerValue.timestamp()]

 let doc = firestore.collection("orders").document()
 doc.setData(data) (error) in

 

在查看 Firestore 时,虽然我看到了这个:

这正常吗?不应该有一个 long 包含自 Unix 纪元以来的毫秒数吗?

【问题讨论】:

你的ServerValue.timestamp()函数是什么样的? @creeperspeak,它与 Firebase ios SDK 附带的相同。 ServerValue.timestamp()[AnyHashable : Any] 【参考方案1】:

不,这似乎不正常。这是我使用 ServerValue.timestamp() 时得到的。

【讨论】:

【参考方案2】:

您正在使用服务器时间戳的实时数据库概念,即ServerValue.timestamp。它本质上是一个包含您显示的值的字典:'.sv': 'timestamp'。这与 Firestore 不兼容。

相反,您想使用 Firestore 的服务器时间戳概念,即 FieldValue.serverTimestamp()。另请参阅documentation here 中的最后一个示例。

【讨论】:

如何从服务器中检索它?我的意思是,如果我将对象从 Firestore 映射到我的 android 项目中的 POJO,例如,timeCreated 的类型应该是什么?我试过var timeCreated: FieldValue? = null 但它不起作用,因为 FieldValue 似乎没有时间戳的设置器 它将是一个即将退出的数字,以自纪元以​​来的毫秒数表示。

以上是关于时间戳作为“时间戳”保存到 Firestore 是不是正常?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Firestore 中重复使用现有字段作为分片时间戳吗?

在 Flutter 中显示两个 Firestore 时间戳值之间的差异

将数据类的对象添加到 Kotlin 的 Firestore 时如何添加 Firebase 时间戳?

React Native Parse Firestore 时间戳

如何使用flutter-web将时间戳存储在firestore中

如何从 Flutter 将文档创建时间戳添加到 Firestore [重复]