【问题标题】:Adding time to Firestore serverTimestamp()将时间添加到 Firestore serverTimestamp()
【发布时间】:2018-05-28 10:10:22
【问题描述】:

有没有办法在不使用云功能的情况下为服务器时间戳添加时间?

我想要的是从面板更新时间戳,并让用户端检查时间戳是否大于当前时间。我还希望面板用户能够设置添加的时间量,因此在用户端执行逻辑不是最佳解决方案。

例子:

document.set({ validTo: firestore.FieldValue.serverTimestamp() + 5000 });

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    您无法在客户端上对服务器时间戳执行日期数学运算。 FieldValue 值只是在服务器上解释的标记。如果您想使用 Google 服务器时间进行日期数学运算,则必须在 Google 服务器上运行该逻辑。

    如果您绝对需要在客户端上执行此操作,则必须在一次操作中写入时间戳,然后在第二次操作中读回文档,然后在第三次操作中将修改后的日期值写回文档.

    【讨论】:

      【解决方案2】:

      我是一个很老的新手,这是我读到的第一个问题,我可以提供一些东西。我真的很感激我在这里的一切......

      您无法更改时间戳,但您可以将时间戳更改为 UNIX 时间,并在文档创建期间在服务器端对其进行操作。

      ref.add({expires: firebase.firestore.Timestamp.now().toMillis() + 5000})
      

      然后从前端根据过期查询。可能并不理想,但是当您只有前端可以使用时......

      【讨论】:

      • 这确实可行,但不是你想象的那样。您的代码没有执行“服务器端操作”。它只会存储一个在客户端完全计算的数字,表示当前客户端时间戳增加了 5000 毫秒。服务器端甚至不会将其解释为时间戳,因为“toMillis”返回一个数字,而不是时间戳。
      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 2020-06-06
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多