2017-09-13 222 views
0

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

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

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

b)为了排序的目的,我需要在数据库中存储所有帖子的负数版本creationTimestamp-firebase.database.ServerValue.TIMESTAMP不起作用。什么是正确的方法来做到这一点?

回答

6

谷歌通过great trouble确保其所有服务器的时间尽可能接近同步。因此,如果您在云服务器上运行代码,并且希望知道其他Google服务器(例如实时数据库)上的时间,请使用Date.now()。在Cloud Functions中运行时,不需要使用特殊的数据库令牌作为时间戳。

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

相关问题