从 firebase 集合中删除文档

问题描述 投票:0回答:2

我正在开发一个简单的预订应用程序。 对于每个预订的时段,我都有一个取消按钮,按下时应从集合中删除约会。

  Future deleteAppt() async {
    QuerySnapshot querySnapshot =
        await FirebaseFirestore.instance.collection("client_bookings").get();

    for (int i = 0; i < querySnapshot.docs.length; i++) {
      var a = querySnapshot.docs[i];

      final collection =
          FirebaseFirestore.instance.collection('client_bookings');
      collection
          .doc(a.id) // <-- Doc ID to be deleted.
          .delete() // <-- Delete
          .then((_) => print('Deleted'))
          .catchError((error) => print('Delete failed: $error'));

      print(a.id);
    }
  }

到目前为止,这是我的代码。但是,当单击该按钮时,所有约会都将被删除。你能给我任何建议我该如何解决这个问题? 此外,我正在使用 StreamBuilder 和 ListView.builder 遍历集合并在容器中显示每个约会。

scheme image added

flutter delete-file
2个回答
2
投票

如果你想删除一个特定的约会,你应该通过约会ID。

Future<void> deleteAppt(String apptId) async {
  final collection = FirebaseFirestore.instance.collection('client_bookings');
  try {
    await collection.doc(apptId).delete();
    print('Deleted');
  } catch (error) {
    print('Delete failed: $error');
  }
}

0
投票

您正在遍历每个文档并删除该文档

 for (int i = 0; i < querySnapshot.docs.length; i++) {}

删除 for 语句

© www.soinside.com 2019 - 2024. All rights reserved.