【问题标题】:How to add timestamp on document create to Firestore from Flutter [duplicate]如何从 Flutter 将文档创建时间戳添加到 Firestore [重复]
【发布时间】: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,

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您可以使用FieldValue.serverTimestamp()

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

    'createdOn':FieldValue.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 方法。
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2020-12-26
    • 2021-05-30
    • 1970-01-01
    • 2018-11-07
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多