Usm*_*ahi 5 dart firebase flutter google-cloud-firestore
我想删除 driverID 与登录用户 ID 相同的文档。我正在使用下面的代码,但它不起作用。
requestToJoinReference.where('driverID'==user.uid).getDocuments().then((snapshot) {
for(DocumentSnapshot ds in snapshot.documents)
{
// ds.reference.delete();
print(ds.reference);
}
});
Run Code Online (Sandbox Code Playgroud)
这不是在 firebase 中使用 where 子句的正确语法,您正在寻找的是
requestToJoinReference.where('driverID', isEqualTo: user.uid).getDocuments().then((snapshot) {
for(DocumentSnapshot ds in snapshot.documents)
{
//ds.reference.delete();
print(ds.reference);
}
});
Run Code Online (Sandbox Code Playgroud)
另外,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);
}
});
Run Code Online (Sandbox Code Playgroud)
而且,这不是执行多个删除的推荐方法,您需要的是批量写入,批量写入允许您作为单个批处理执行多个写入操作,该批处理可以包含设置、更新或删除操作的任意组合。
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();
});
}
Run Code Online (Sandbox Code Playgroud)
我还建议您将依赖项升级到最新版本,并参考FlutterFire文档以了解语法更改。
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |