Firestoreでドキュメントの作成時にや削除時にトリガーして使用することを想定しています。
ログデータ作成はアプリ側ではなくバックグラウンドで安全に処理したいですね。
exports.myFunction = functions.firestore
.document('collection/{docId}/subcollection/{subId}')
.onCreate((snap, context) => {
const data = snap.data();
// ログ用のデータを作成する
const logData = {
subcollectionId: context.params.subId,
createdAt: admin.firestore.FieldValue.serverTimestamp()
};
// ログ用のドキュメントを作成する
const docRef = admin.firestore().collection('collection').doc(context.params.docId).collection('logs').doc();
// ログ用のドキュメントにデータを書き込む
return docRef.set(logData)
.then(() => {
console.log('Log document created');
return null;
})
.catch((error) => {
console.error('Error creating log document:', error);
return null;
});
});
ドキュメントIDの取得方法は以下です。
exports.myFunction = functions.firestore
.document('collection/{docId}/subcollection/{subId}')
.onCreate((snap, context) => {
// これ
const docId = context.params.docId;
const subId = context.params.subId;
console.log(`New subcollection created with ID: ${subId} in document with ID: ${docId}`);
});