React Firebase v9 SDKを使用してFirestoreのサブコレクションを完全に削除する方法

2024年4月16日火曜日

Firebase javascript

t f B! P L

はじめに

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を使用する際の鍵となります。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ