我需要获取Firebase数据库服务器的实际时间戳,而不是占位符firebase.database.ServerValue.TIMESTAMP
。
为了避免XY问题,我将提供两个用例:
a)我使用云功能和JWT创建了自己的重置密码系统。用户请求重置密码。我签署一个包含其用户名和当前时间戳(当前使用date.now(now())的对象,并将其嵌入到其电子邮件的链接中。当他们打开链接时,我需要验证JWT并将其与Firebase数据库中uid
下存储的时间戳进行比较。我还更新了数据库中的时间戳,因此下次他们尝试使用相同的令牌时,它将显示为过期(即使我为令牌设置的1小时到期尚未通过)。在这里使用date.now()吗?我如何将当前的火箱时间传递给jwt.sign()
。
b)我需要在数据库中存储所有帖子的creationTimestamp
的负版本,以进行排序。-firebase.database.ServerValue.TIMESTAMP
不起作用。正确的方法是什么?
Google遇到了很大的麻烦,以确保其所有服务器的时间尽可能紧密地同步。因此,如果您在云功能中运行代码(最终都在Google服务器上,并且想知道另一个Google服务器上的时间(例如您的实时数据库),只需使用Date.now()
即可。在云功能中运行时,无需将特殊数据库令牌用于时间戳。
当代码在时钟可能无法很好地同步的客户端设备上运行时,时间戳令牌旨在有用。