Memadamkan Koleksi dan Subkoleksi dalam Firestore
Firestore menyediakan struktur data hierarki dengan koleksi dan dokumen. Koleksi boleh menyimpan subkoleksi, mewujudkan sarang berbilang peringkat. Apabila memadamkan senarai tertentu, cabaran timbul disebabkan ketidakupayaan untuk memadamkan ID senarai sambil mengekalkan subkoleksinya.
Penyelesaian Tanpa Penstrukturan Semula:
Untuk memintas isu ini, langkah berikut boleh digunakan:
Pendekatan ini memastikan penyingkiran lengkap senarai dan data yang berkaitan tanpa menjejaskan struktur pangkalan data.
Pertimbangan untuk Koleksi Besar:
Apabila berurusan dengan koleksi yang besar, adalah disyorkan untuk memadamkan dokumen dalam kelompok yang lebih kecil untuk mengurangkan kemungkinan ralat di luar ingatan. Proses pemadaman hendaklah diteruskan sehingga semua dokumen dalam koleksi atau subkoleksi telah dialih keluar.
Awas Berkenaan Operasi Padam:
Walaupun operasi pemadaman boleh dilakukan secara teknikal, Firebase pasukan amat tidak menggalakkan penggunaannya kerana potensi keselamatan dan implikasi prestasi. Ia hanya dinasihatkan untuk memadamkan koleksi kecil, terutamanya apabila dilakukan daripada persekitaran pelayan yang dipercayai.
Pelaksanaan Android:
Untuk aplikasi Android, coretan kod berikut boleh digunakan untuk padamkan 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 dan Subkoleksi Firestore Tanpa Penstrukturan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!