Webクライアント側でFirestoreのドキュメントを削除するときに、ドキュメントに紐づくコレクションが存在すると、コレクションが残る。
FirebaseのWebコンソールから確認すると削除したドキュメントは斜体になった状態で、下層のコレクションは普通に存在する。
Webクライアント側で丁寧に紐づくコレクションを削除するのも手ですが、データが多い場合などで完全に削除して良ければ、Firebase の Functions で削除可能です。
Functions で削除すると下層のコレクションもまるっと削除できます。
Functions は WebAPI として作るか、あるいは Firestore を拡張すると良いと思います。
私は後者の方が好みです。こんな感じでしょうか?
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
import * as tools from "firebase-tools";
const deleteXxxx = async (
snap: FirebaseFirestore.DocumentSnapshot,
context: functions.EventContext
) => {
await tools.firestore.delete(snap.ref.path, {
project: process.env.GCLOUD_PROJECT,
recursive: true,
yes: true
});
return "OK";
};
export const firestoreDeleteXxxx = functions.firestore
.document("xxxx/{deleteId}")
.onDelete((snap, context) => {
return deleteXxxx(snap, context);
});