[英]How to delete multiple documents from Cloud Firestore using Batched writes in angular 5
[英]FLUTTER: How to delete multiple documents using where clause in cloud firestore?
我想刪除 driverID 與登錄用戶 ID 相同的文檔。 我正在使用下面的代碼,但它不起作用。
requestToJoinReference.where('driverID'==user.uid).getDocuments().then((snapshot) {
for(DocumentSnapshot ds in snapshot.documents)
{
// ds.reference.delete();
print(ds.reference);
}
});
這不是在 firebase 中使用 where 子句的正確語法,您要查找的是
requestToJoinReference.where('driverID', isEqualTo: user.uid).getDocuments().then((snapshot) {
for(DocumentSnapshot ds in snapshot.documents)
{
//ds.reference.delete();
print(ds.reference);
}
});
另外, delete() 是 aysnc 所以你也必須讓你的 forEach 循環異步
requestToJoinReference.where('driverID', isEqualTo: user.uid).getDocuments().then((snapshot) {
for(DocumentSnapshot ds in snapshot.documents)async {
await ds.reference.delete();
print(ds.reference);
}
});
而且,這不是執行多個刪除的推薦方法,您需要的是批寫入,批寫入允許您將多個寫入操作作為一個批處理執行,該批處理可以包含設置、更新或刪除操作的任意組合。
Future<void> batchDelete() {
WriteBatch batch = FirebaseFirestore.instance.batch();
return requestToJoinReference.where('driverID', isEqualTo: user.uid).get().then((querySnapshot) {
querySnapshot.documents.forEach((document) {
batch.delete(document.reference);
});
return batch.commit();
});
}
我還建議您將依賴項升級到最新版本,並參考FlutterFire文檔了解語法更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.