Firestoreにデータを登録する際に、サーバ側で現在日時のプロパティをデータに追加する例を以下に示します。
参考
手順
1. Cloud FirestoreでCollectionを作っておく
2. Cloud Functionsをセットアップする
以下の手順に従う。
https://firebase.google.com/docs/functions/get-started
3. あらかじめ用意されている、index.jsを以下のように書き換える
index.js
const functions = require("firebase-functions");
// addDateTimeが関数名となる。
// regionを指定しないと、us-central1にfunctionが出来てしまったので、明示的に東京(asia-northeast1)を指定している。
exports.addDateTime = functions.region("asia-northeast1").firestore
.document("ここにcollection名を指定/{docId}")
.onCreate((snap, context) => {
snap.ref.set({"addedField": new Date()}, {merge: true});
});
setメソッドの説明
https://googleapis.dev/nodejs/firestore/latest/DocumentReference.html#set
4. コードをデプロイする
例
$ firebase deploy --only functions
Functionsのトップ画面を見ると、関数が追加されている。
5. Firestoreにデータを登録する
6. 自動でプロパティ追加
管理コンソール画面で数秒待った後、表示が更新され、プロパティが追加されていることが確認できた。
備考
FirestoreのデータをREST APIで取得すると、デフォルトで、createTime, updateTimeプロパティが自動で付与されておりますが、GCP内部で使用するデータと思われるため、明示的に付与する例を上記に示しました。
{
"documents": [
{
"name": "projects/projectIDは伏せておく/databases/(default)/documents/collection1/IewJlzFPfrItKiay9Ve9",
"fields": {
"addedField": {
"timestampValue": "2022-07-17T16:00:44.165Z"
},
"name": {
"stringValue": "hoge"
}
},
"createTime": "2022-07-17T16:00:41.213663Z",
"updateTime": "2022-07-17T16:00:48.588309Z"
}
]
}