Memadamkan Koleksi dan Subkoleksi dalam Firestore
Pernyataan Masalah:
Dalam pangkalan data Firestore dengan koleksi senarai, setiap senarai mengandungi dua subkoleksi: pekerja dan lokasi. Apabila pengguna ingin memadam senarai tertentu, memadamkan dokumen senarai sahaja tidak mengalih keluar subkoleksi. Isu ini timbul disebabkan oleh petunjuk dokumentasi Firestore bahawa pemadaman dokumen dengan subkoleksi tidak akan mengalih keluar subkoleksi tersebut secara automatik.
Penyelesaian Cadangan:
1. Padamkan Subkoleksi Secara Berulang:
2. Gunakan Kaedah deleteCollection (Tidak Disyorkan):
Kod Android untuk Pemadaman Rekursif:
Kod Android berikut menunjukkan cara memadam koleksi secara rekursif:
<code class="java">private void deleteCollection(final CollectionReference collection, Executor executor) { Tasks.call(executor, () -> { int batchSize = 10; Query query = collection.orderBy(FieldPath.documentId()).limit(batchSize); List<DocumentSnapshot> deleted = deleteQueryBatch(query); while (deleted.size() >= batchSize) { DocumentSnapshot last = deleted.get(deleted.size() - 1); query = collection.orderBy(FieldPath.documentId()).startAfter(last.getId()).limit(batchSize); deleted = deleteQueryBatch(query); } return null; }); } @WorkerThread private List<DocumentSnapshot> deleteQueryBatch(final Query query) throws Exception { QuerySnapshot querySnapshot = Tasks.await(query.get()); WriteBatch batch = query.getFirestore().batch(); for (DocumentSnapshot snapshot : querySnapshot) { batch.delete(snapshot.getReference()); } Tasks.await(batch.commit()); return querySnapshot.getDocuments(); }</code>
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Koleksi dan Subkoleksi Firestore dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!