firestoreのコレクションを削除しても、その下にあるサブコレクションは削除されない
#コレクションの削除
//...省略
db = firebase.firestore();
//...省略
collectionDelete(docId: string) {
this.db
.collection("myCollection")
.doc(docId)//myCollectionのなかのドキュメントID
.delete()
.then(() => {
console.log("削除完了");
});
これでドキュメントは削除完了
ただこの状態だとこのコレクションにあるサブコレクションは残ったまんま
#サブコレクションの削除
subCollectionDelete(docId: string) {
this.db
.collection("myCollection")
.doc(docId)//myCollectionのなかのドキュメントのID
.collection("mySubCollection")
.get()
.then((subDoc) => {
subDoc.forEach((doc) => {
console.log(doc.data());
this.db
.collection("myCollection")
.doc(docId)
.collection("mySubCollection")
.doc(doc.id)
.delete()
.then(() => {
console.log("mySubCollection削除");
});
});
});
}
これで先ほど消したドキュメントのサブコレクションが__全部
__消せます。
サブコレクションを削除する場合は一度.get()
で消したいサブコレクションを取得して
その取得したサブコレクションに対してforEach
を使って一つずつ消す形になります。
サブコレクションの数が多い場合はcloudFunctionsを使って削除した方がいいのかもしれません。
後はこの二つのメソッドを実行すれば完了です。
allDelete(docId: string) {
this.collectionDelete(docId)
this.subCollectionDelete(docId)
}
間違いがあったらご指摘いただけると嬉しいです。
以上です!