Как удалить все документы в коллекции в Firestore с Flutter - PullRequest
0 голосов
/ 31 октября 2018

У меня есть база данных пожарного магазина. Плагины моего проекта:

cloud_firestore: ^ 0.7.4 firebase_storage: ^ 1.0.1

Это коллекция "сообщений" с несколькими документами. Мне нужно удалить все документы в коллекции сообщений. Но этот код не работает:

Firestore.instance.collection('messages').delete();

но удаление не определено

каков правильный синтаксис?

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Ах. Первый ответ почти правильный. Проблема связана с методом карты в dart и с тем, как он работает с Futures. В любом случае, попробуйте вместо этого использовать цикл for, и все будет хорошо:

firestore.collection('messages').getDocuments().then((snapshot) {
  for (DocumentSnapshot ds in snapshot.documents){
    ds.reference.delete();
  });
});
0 голосов
/ 11 июня 2019

Причина, по которой удаление не работает, потому что эта функция предназначена для удаления документов, а не коллекций, поэтому вместо использования:

Firestore.instance.collection('messages').delete();

используйте это:

 Firestore.instance.collection('messages').document(documentID).delete();
0 голосов
/ 31 октября 2018

Как указано в Firestore docs , в настоящее время нет операции, которая атомарно удаляет коллекцию.

Вам нужно будет получить все документы и просмотреть их, чтобы удалить каждый из них.

firestore.collection('messages').getDocuments().then((snapshot) {
  return snapshot.documents.map((doc) {
    doc.reference.delete();
  });
});

Обратите внимание, что это удалит только коллекцию messages. Если на этом пути есть подколлекции, они останутся в Firestore. Документы также имеют облачную функцию, также интегрированную с функцией Callable, которая использует интерфейс командной строки Firebase, чтобы помочь с вложенным удалением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...