Löschen von Sammlungen und Untersammlungen in Firestore
Problemstellung:
In einer Firestore-Datenbank mit Eine Sammlung von Listen. Jede Liste enthält zwei Untersammlungen: Mitarbeiter und Standorte. Wenn ein Benutzer eine bestimmte Liste löschen möchte, werden durch das Löschen des Listendokuments allein nicht die Untersammlungen entfernt. Dieses Problem entsteht aufgrund des Hinweises in der Firestore-Dokumentation, dass das Löschen eines Dokuments mit Untersammlungen diese Untersammlungen nicht automatisch entfernt.
Vorgeschlagene Lösungen:
1. Untersammlungen iterativ löschen:
2. Verwenden Sie die Methode deleteCollection (nicht empfohlen):
Android-Code für rekursives Löschen:
Der folgende Android-Code demonstriert So löschen Sie eine Sammlung rekursiv:
<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>
Das obige ist der detaillierte Inhalt vonWie lösche ich Firestore-Sammlungen und Untersammlungen effektiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!