在 Firebase -Flutter 中删除子集合

DAn*_*i M 1 firebase flutter google-cloud-firestore

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

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"));
  }
Run Code Online (Sandbox Code Playgroud)

Sim*_*Sot 5

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

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();
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

请记住:

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