Firestoreデータベースがあります。私のプロジェクトプラグイン:
cloud_firestore:^ 0.7.4 firebase_storage:^ 1.0.1
これには、複数のドキュメントを含むコレクション「メッセージ」があります。メッセージコレクションのすべてのドキュメントを削除する必要があります。しかし、このコードは失敗します:
Firestore.instance.collection('messages').delete();
削除は定義されていません
正しい構文はどうですか?
これは、ドキュメント参照の複数のコレクションに役立つと思います
// 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('====================================');
}
});
}
}
Firestoreコレクションからすべてのドキュメントを1つずつ削除します。
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 {
}
}
});