はじめに
Firebase Firestore Databaseでデータを管理する際、特定のドキュメントのサブコレクションを削除する必要がある場合があります。Firestoreでは、親のドキュメントを削除してもそのサブコレクションは自動的には削除されません。この記事では、ReactアプリケーションでFirebase v9 SDKを使用して、サブコレクションを効率的に全て削除する方法を具体的に説明します。
サブコレクションを全削除するAPIは用意されていない
現在のところ、Firestore SDKはサブコレクションをまとめて削除するための専用APIを提供していません。そのため、サブコレクション内のドキュメントを個別に参照し、一つずつ削除する処理を行う必要があります。
サブコレクションを全削除する具体的な実装方法
サブコレクションを全て削除するための具体的なコード例を以下に示します。この例では、users
コレクションの中の特定のユーザーの orders
サブコレクションを削除します。
import { collection, deleteDoc, getDocs, query, doc } from "firebase/firestore";
import { db } from './firebase'; // Firestoreのインスタンスをインポート
async function deleteSubcollections(parentDocId) {
const subCollectionRef = collection(db, `users/${parentDocId}/orders`);
// サブコレクション内の全ドキュメントを取得
const snapshot = await getDocs(subCollectionRef);
// 各ドキュメントを削除
const deletions = snapshot.docs.map(doc => deleteDoc(doc.ref));
await Promise.all(deletions);
}
// 使用例
deleteSubcollections('userId123')
.then(() => console.log('サブコレクションが正常に削除されました'))
.catch(error => console.error('サブコレクションの削除中にエラーが発生しました', error));
まとめ
Firestoreのサブコレクションを削除する際は、ドキュメントごとに削除する必要があります。この処理は、大量のドキュメントが含まれている場合には時間とコストがかかるため、注意してください。効率的なデータ構造の設計が、Firestoreを使用する際の鍵となります。
0 件のコメント:
コメントを投稿