皆さんこんにちは!
CloudFirestoreを触れて間もない方はこう思ったことはないでしょうか??
不要なcollectionは消去したい!
結論から言うと、CloudFirestoreにはコレクションを消去するメソッドは存在しません!!
公式のドキュメントでも以下のように書いてあります。
Cloud Firestore でコレクション全体またはサブコレクションを削除するには、コレクションまたはサブコレクション内のすべてのドキュメントを取得して削除します。大きなコレクションがある場合は、メモリ不足エラーを避けるため、小さなバッチに分けてドキュメントを削除することをおすすめします。コレクション全体またはサブコレクションが削除されるまで、このプロセスを繰り返します。
では、どのようにしてコレクションを消去するのか。
それをお教えします!
まず、ドキュメントを消去する方法はこんな感じでやります。
db.collection('example').doc('example_1').delete()
// これはできない
db.collection('example').delete()
コレクションまたはサブコレクション内のすべてのドキュメントを取得して削除します。
公式ドキュメントにも書いてある通り、コレクションを消去するにはドキュメントをすべて消去してあげるしかないんです。
でもdb.collection('example').doc('example_1').delete()
でドキュメントを消去できるなら、ドキュメントをすべて取得して一つ一つ消去してあげればいい話。
db.collection('example').get().then((snapshots) => {
const docs = snapshots.docs
docs.forEach(async (doc) => {
// ドキュメントのid(名前)を取得
const id = doc.id
await db.collection('example').doc(id).delete()
})
})
get()
で全てのデータを取得し、forEach
で一つ一つのドキュメントを回す。
このようにしてコレクションを消去することができます!
ちなみにデータが存在しな場合、処理を行っても無駄なので以下のようにして処理を終了してください。
// 空の場合
if(snapshots.empty) {
return
}
いかがだったでしょうか?
CloudFirestoreは汎用性が高いので非常に便利です。
公式のドキュメントも非常に分かりやすいので、誰かが作った記事を見るだけでなくしっかり公式のドキュメントも読みましょう!
以上、「【Firebase】CloudFirestoreのcollectionを消去する方法」でした!
また、何か間違っていることがあればご指摘頂けると幸いです。
他にも初心者さん向けに記事を投稿しているので、時間があれば他の記事も見て下さい!!
あと、最近「ココナラ」で環境構築のお手伝いをするサービスを始めました。
気になる方はぜひ一度ご相談ください!
Thank you for reading