2017-09-13 5 views
0

プレースホルダfirebase.database.ServerValue.TIMESTAMPの代わりにfirebaseデータベースサーバの実際のタイムスタンプを取得する必要があります。Firebaseのクラウド機能:データベースの実際のタイムスタンプを取得

XYの問題を避けるために、私は私の2つの使用例を提供します:

a)のIは、クラウド機能とJWTを使用して自分のパスワードリセットシステムを作成しました。ユーザーがパスワードのリセットを要求します。ユーザー名と現在のタイムスタンプ(現在はDate.now()を使用している)を含むオブジェクトに署名し、電子メールへのリンクに埋め込みます。彼らがリンクを開くと、私はJWTを検証し、firebaseデータベースのuidの下に保存されているタイムスタンプと比較する必要があります。私はまたデータベースのタイムスタンプを更新し、次回同じトークンを使用しようとすると、(トークンに設定された1時間の有効期限が過ぎていなくても)期限切れと表示されます。ここで十分なDate.now()を使用していますか?どのようにして現在の火災基地時間をjwt.sign()に渡すことができますか?

b)並べ替えの目的で、すべての投稿のうち、負のバージョンのcreationTimestampをデータベースに保存する必要があります。 -firebase.database.ServerValue.TIMESTAMPは機能しません。それを行う正しい方法は何ですか?

答えて

6

Googleはgreat troubleを経由して、すべてのサーバーにできるだけ緊密に同期している時刻があることを確認します。ですから、Googleサーバー上で終了するクラウド機能でコードを実行していて、別のGoogleサーバー(リアルタイムデータベースなど)で時刻を知りたい場合は、Date.now()を使用してください。クラウド機能で実行する場合は、タイムスタンプ用の特別なデータベーストークンを使用する必要はありません。

このタイムスタンプトークンは、クロックがあまりうまく同期していない可能性のあるクライアントデバイスでコードが実行されている場合に役立ちます。

関連する問題