課題
Firebaseを利用してユーザーが退会することをトリガーとしてユーザーが作成したFirestoreのデータを削除したい
問題
Firestoreにデータを入力する際にcollectionの名前をfirebase authのUIDに設定していた。しかしCollectionを指定して直接削除する関数は存在しなかった。
解決法
Collectionのすべてのdocumentを持ってきて、それを反復処理を通して削除する。
コード
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
export const deleteUserData = functions.auth.user().onDelete(async (user) => {
const db = admin.firestore();
const uid = user.uid;
const collectionRef = db.collection(uid);
return collectionRef
.get()
.then((snapshot) => {
const batch = db.batch();
snapshot.forEach((doc) => {
batch.delete(doc.ref);
});
return batch.commit();
})
.catch((error) => {
console.error("Error deleting collection: ", error);
});
});