Можно ли в Firestore удалить некоторые документы, у которых "Имя значения" такое же?

Например: у меня есть несколько UID в качестве документов внутри коллекции. Внутри этих документов будут сохранены два типа «имен значений». 1-е «Имя значения» называется «byCar». 2-е «Имя значения» называется «byFoot». Теперь я хочу удалить все документы, в которых «Имя значения» равно «byCar». Все остальные документы, в которых «Имя значения» равно «byFoot», останутся нетронутыми. Возможно ли что-то подобное?

Я программирую на Flutter / Dart, и было бы здорово, если бы кто-нибудь мог дать мне ответ, потому что я не смог найти что-то в Интернете.

0
user14578549 23 Янв 2021 в 20:14

2 ответа

Лучший ответ

Firestore не поддерживает запросы на обновление, когда вы отправляете запрос на сервер, и он обновляет (или, в вашем случае, удаляет) все соответствующие документы. Чтобы написать или удалить документ, вам необходимо знать весь его путь в коде приложения.

Это означает, что вам нужно выполнить два шага для удаления документов:

  1. Выполните запрос, чтобы найти все документы, соответствующие вашему условию.
  2. Переберите результаты и удалите их.

В коде это будет примерно так:

refUser.where("city", isEqualTo: "CA").getDocuments().then((querySnapshot){
  for (DocumentSnapshot documentSnapshot in querySnapshot.documents){
    documentSnapshot.reference.delete();
  });
  snapshot.documents.first.reference.delete();
});

Также см:

2
Frank van Puffelen 23 Янв 2021 в 17:32

Ваш код будет выглядеть примерно так:

QuerySnapshot querySnapshot = await db
  .collection("yourPathCollection")
  .where("Value Name", isEqualTo: "byCar")
  .get()
  .then((querySnapshot) {
querySnapshot.docs.forEach((doc) {
  doc.reference.delete();
});
return null; });

Возможно, Cloud Firestore заблокирует ваш запрос, поэтому вам нужно будет изменить правила базы данных в соответствии с вашими потребностями.

0
Lucas Baggio 23 Янв 2021 в 18:12