J'ai une base de données Firestore. Les plugins de mon projet:
cloud_firestore: ^ 0.7.4 firebase_storage: ^ 1.0.1
Cela a une collection "messages" avec plusieurs documents. J'ai besoin de supprimer tous les documents de la collection de messages. Mais ce code échoue:
Firestore.instance.collection('messages').delete();
mais supprimer n'est pas définir
comment est la syntaxe correcte?
Je pense que cela pourrait aider pour plusieurs collections dans toute référence de document
// add ${documentReference} that contains / may contains the ${collectionsList}
_recursiveDeleteDocumentNestedCollections(
DocumentReference documentReference, List<String> collectionsList) async {
// check if collection list length > 0
if (collectionsList.length > 0) {
// this line provide an async forEach and wait until it finished
Future.forEach(collectionsList, (collectionName) async {
// get the collection reference inside the provided document
var nfCollectionRef = documentReference.collection(collectionName);
try {
// get nested collection documents
var nestedDocuemtnsQuery = await nfCollectionRef.getDocuments();
// loop through collection documents
Future.forEach(nestedDocuemtnsQuery.documents, (DocumentSnapshot doc) async {
// recursive this function till the last nested collections documents
_recursiveDeleteDocumentNestedCollections(
doc.reference, collectionsList);
// delete the main document
doc.reference.delete();
});
} catch (e) {
print('====================================');
print(e);
print('====================================');
}
});
}
}
Supprimer tous les documents de la collection Firestore un par un:
db.collection("users").document(userID).collection("cart")
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
db.collection("users").document(userID).
collection("cart").document(document.getId()).delete();
}
} else {
}
}
});