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

Posted

技术标签:

【中文标题】如何从 Flutter 将文档创建时间戳添加到 Firestore [重复]【英文标题】:How to add timestamp on document create to Firestore from Flutter [duplicate] 【发布时间】:2020-06-23 11:59:12 【问题描述】:

我正在编写代码以将数据从颤振设置到 Firestore。我想要的是在创建数据时添加一个字段,例如“createdOn”。 Flutter 的 DateTime.now() 从设备中获取时间,但我想获取服务器端时间。我的代码如下:

Future updateDataModel(String userName, String userPosition, String userLocation) async
  return await userCollection.document().setData(
      'userName' : userName,
      'userPosition' : userPosition,
      'userLocation' : userLocation
    );
  

如果我可以有一个像下面这样的字段来获取 firebase 的时间戳,那将是一个很大的帮助。

   'createdOn' : TimestampHere,

【问题讨论】:

【参考方案1】:

您可以使用FieldValue.serverTimestamp()

serverTimestamp(): FieldValue 返回与 set() 或 update() 在写入的数据中包含服务器生成的时间戳。

'createdOn':FieldValue.serverTimestamp()

参考文献

ServerTimestamp

【讨论】:

代码在询问 Flutter,但您链接到 javascript 文档。 原理相同,只是把flutter联系起来了 你是如何在 dart 模型中定义 createdOn 字段的?请建议。谢谢。 @Kamlesh 你可以在这里查看gist.github.com/TinusJ/b35c6cb4e432b7a92e67e93565318ef3希望它有帮助【参考方案2】:

您可以使用多种类型的时间戳,例如日期时间

"timestamp": DateTime.now(),

服务器值

'timestamp' : Timestamp.now()

【讨论】:

你是如何在 dart 模型中定义 createdOn 字段的?请建议。谢谢。【参考方案3】:

如果你使用 Firebase,你应该像这样存储 epoch 的时间戳

DateTime.now().microsecondsSinceEpoch

【讨论】:

这给了我一个奇怪的数字 (1583957322262781)。如何将其转换为可读时间? 那么,只需使用DateTime.fromMillisecondsSinceEpoch(_yourEpochTime)重新转换为可读类型即可。我建议使用纪元时间的原因是任何时间的日期时间都可以存储相同的数据。它喜欢 JavaScript 中的getTime 方法。

以上是关于如何从 Flutter 将文档创建时间戳添加到 Firestore [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - 无法将时间戳字段添加到数组中的子文档

如何在 Flutter 中嵌套 StreamBuilder?

将关系迁移到多维 - 如何从时间戳创建时间维度 - SSAS

颤振 |如何将数据添加到 Firestore 中的现有文档

Flutter:按时间戳查询 Firestore 文档

Flutter)我想知道如何通过按下按钮从创建的列表中删除项目