【问题标题】:Cloud Functions for Firebase: get actual timestamp of databaseCloud Functions for Firebase:获取数据库的实际时间戳
【发布时间】:2017-09-13 20:47:59
【问题描述】:

我需要获取 firebase 数据库服务器的实际时间戳,而不是占位符 firebase.database.ServerValue.TIMESTAMP

为了避免XY问题,我将提供我的两个用例:

a) 我使用云功能和 JWT 创建了自己的重置密码系统。用户请求重设密码。我签署了一个包含他们的用户名和当前时间戳的对象(当前使用 Date.now()),并将其嵌入到他们电子邮件的链接中。当他们打开链接时,我需要验证 JWT 并将其与存储在 firebase 数据库中uid 下的时间戳进行比较。我还更新了数据库中的时间戳,因此下次他们尝试使用相同的令牌时,它会显示为已过期(即使我为令牌设置的 1 小时过期未通过)。在这里使用 Date.now() 足够了吗?如何将当前的 firebase 时间传递给jwt.sign()

b) 我需要在数据库中存储所有帖子的 creationTimestamp 的否定版本,以便进行排序。 -firebase.database.ServerValue.TIMESTAMP 不起作用。这样做的正确方法是什么?

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    Google 会通过great trouble 确保其所有服务器的时间尽可能同步。因此,如果您在 Cloud Functions 中运行代码,最终在 Google 服务器上运行,并且您想知道另一台 Google 服务器(例如您的实时数据库)上的时间,只需使用Date.now()。在 Cloud Functions 中运行时,无需使用特殊的数据库令牌作为时间戳。

    当代码在时钟可能不是很好同步的客户端设备上运行时,该时间戳令牌很有用。

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 2019-09-25
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多