2017-09-13 221 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中運行時,不需要使用特殊的數據庫令牌作爲時間戳。

當代碼在其時鐘可能不很好同步的客戶端設備上運行代碼時,該時間戳記標記將很有用。

相關問題