这不是在 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 文档以了解语法更改。