Firebase的云功能:获取数据库的实际时间戳

时间:2017-09-13 20:48:00

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

我需要获取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不起作用。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

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

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