【问题标题】:is there away to get Firestore server time是否可以获取 Firestore 服务器时间
【发布时间】:2022-07-06 16:24:40
【问题描述】:

我想知道是否有办法直接获取当前服务器时间。

我这样做的方法是编写一个文档并使用FieldValue.serverTimestamp(), 然后再次阅读它。

但是有没有办法知道当前服务器时钟或时间是什么而无需再次写入和读取?

FirebaseFirestore.instance.collection('users').doc(currentUser.uid).update({
      'currentTime':FieldValue.serverTimestamp(),
    });

由于多种原因,我无法使用客户端时间

【问题讨论】:

  • 没有其他办法。如果您不想获取服务器时间,您可以随时将用户本地时间转换为 UTC,它将与服务器上的时间几乎相同。
  • 但是如果用户自己更改系统时钟怎么办?
  • 这将是他的错。 XD 如果很重要,例如付款或其他什么,只需使用 Firebase 函数在服务器端设置这个时间。
  • 如果你能够设置FieldValue.serverTimestamp() 任何你想要的或者有一个你可以使用的函数,你仍然有用户可以改变它的问题。
  • 用户不能影响FieldValue.serverTimestamp(),但他可以在Firebase运行的任何时候发送对象我不确定这是否可能,但使用规则你可以检查是否有FieldValue.serverTimestamp()

标签: firebase google-cloud-platform google-cloud-firestore


【解决方案1】:

Firestore 时间戳在服务器上生成。目前没有办法立即读取时间戳字段的值。这意味着在您从 Firebase 服务器获得响应之前,服务器端时间戳为空。因此,正如您已经注意到的,您必须将其写下来并读回来。

话虽如此,我建议您使用FieldValue.serverTimestamp(),因为它可以存储小至纳秒的时间单位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2020-09-02
    • 2022-08-17
    • 2020-07-24
    • 2011-10-21
    相关资源
    最近更新 更多