JavaScript
tips
Firebase
Firestore

Firestoreでドキュメントの作成/編集時刻をサーバ側に任せる方法


はじめに

Firebaseの勉強がてらクイズの早押しボタンをVueとFirebaseで作ったんだけれども(クリスマス会のクイズ大会用)、ボタンを押した履歴のタイムスタンプ指定にクライアントの時刻を使いたくないなーと思っていたところ、探してみたらサーバ側に処理を任せる方法があったのでメモ。


serverTimestampを使う

作成日なり更新日なりのフィールドにnew Date()のかわりにfirebase.firestore.FieldValue.serverTimestamp()を使えばOK。それだけ。

https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue#.serverTimestamp


サンプル


クライアント側で値設定(よろしくないやつ)

const db = firebase.firestore()

db.settings({
timestampsInSnapshots: true
})

db.collection('test').add({
createdAt: new Date()
})


サーバ側で値設定

const db = firebase.firestore()

db.settings({
timestampsInSnapshots: true
})

db.collection('test').add({
createdAt: firebase.firestore.FieldValue.serverTimestamp()
})

最初は「Functionsでやらなきゃダメなのかなー」とか思ってたけど楽でよかった。