删除Firebase-Flutter中的子集合



我有每个用户的任务子集合,我如何删除任务,

CollectionReference users = FirebaseFirestore.instance.collection('users');
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<void> deleteTask() {
return users
.doc(user.uid)
.collection('Tasks').delete() ?? ??
.then((value) => print("Tasks Deleted"))
.catchError((error) => print("Failed to delete task: $error"));
}

要使用Cloud Firestore删除集合或子集合中的所有文档,可以使用在DocumentReference:上迭代的delete方法

CollectionReference users = FirebaseFirestore.instance.collection('users');
Future<void> deleteAllTaskDocs() {
return users
.doc(user.uid)
.collection('Tasks')
.get()
.then((QuerySnapshot querySnapshot) {
querySnapshot.docs.forEach((doc) {
doc.reference.delete();
});
});
}

请记住:

  • 没有原子删除集合的操作
  • 删除文档不会删除其子集合中的文档
  • 如果文档具有动态子集合,则很难知道要为给定路径删除哪些数据
  • 删除500多个文档的集合需要多次批处理写入操作或数百次单次删除

最新更新