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

Joe*_*Doe 0 firebase firebase-realtime-database google-cloud-functions

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

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

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

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

Dou*_*son 6

谷歌经历了很大的麻烦,以确保他们所有的服务器都有尽可能紧密同步的时间.因此,如果您在云端功能中运行代码(最终在Google服务器上运行),并且您想知道其他Google服务器上的时间(例如您的实时数据库),请使用Date.now().在云功能中运行时,无需使用特殊数据库令牌作为时间戳.

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