Padamkan Koleksi atau Subkoleksi dalam Firestore
Apabila berurusan dengan struktur data bersarang dalam Firestore, memadamkan koleksi boleh menjadi sukar disebabkan oleh pengehadan daripada pemadaman koleksi. Artikel ini menyediakan penyelesaian untuk memadam kedua-dua koleksi dan subkoleksi sambil mengekalkan struktur data.
Dalam senario yang dibentangkan, terdapat koleksi yang dipanggil "senarai" yang mengandungi dokumen dengan ID yang mewakili ID senarai. Setiap dokumen senarai mempunyai dua subkoleksi: "pekerja" dan "lokasi." Memadamkan senarai tertentu memerlukan pengendalian yang teliti untuk mengelakkan subkoleksi yatim.
Proses Pemadaman
Untuk berjaya memadamkan senarai tertentu, ikut langkah berikut:
Pemadaman Berkelompok untuk Koleksi Besar
Untuk koleksi besar, dinasihatkan untuk memadamkan dokumen secara berkelompok untuk mengelakkan ralat ingatan. Laksanakan fungsi yang memadamkan dokumen dalam kelompok 10 dan mengulangi proses sehingga keseluruhan koleksi dipadamkan.
Implikasi Keselamatan Firestore
Adalah penting untuk ambil perhatian bahawa Firebase pasukan mengesyorkan agar tidak memadamkan koleksi. Walau bagaimanapun, untuk koleksi kecil dan dalam persekitaran pelayan yang dipercayai, pendekatan ini boleh digunakan dengan berhati-hati.
Contoh Kod untuk Android
Untuk aplikasi Android, anda boleh menggunakan yang berikut kod untuk memadamkan koleksi:
<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 atau Subkoleksi dalam Firestore sambil Mengekalkan Struktur Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!