gpt4 book ai didi

firebase - FLUTTER:如何使用云 Firestore 中的 where 子句删除多个文档?

转载 作者:行者123 更新时间:2023-12-03 03:20:06 26 4
gpt4 key购买 nike

我想删除 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语法更改文档。

关于firebase - FLUTTER:如何使用云 Firestore 中的 where 子句删除多个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63993494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com