FireStore удалить документы по значению поля - PullRequest
0 голосов
/ 12 апреля 2020

каждый из моих документов в моей базе данных firestore содержит 1 поле {name: 'some value'}

Я хотел бы l oop через все документы, а затем, если do c значение поля равно моему параметру, я хотел бы удалить, что сделать c

Я пытаюсь сделать это так:

removeContact: function(name){
      console.log('removing contact',name)

      db.collection("contacts").forEach(doc=>{
        if(doc.data().name === name){
          doc.delete()
        }
      })

    }

но я получаю ошибку, что forEach ( ) не определен.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Вам нужно использовать .get() после коллекции или запроса, чтобы получить моментальный снимок запроса обещание , которое вы затем обрабатываете соответствующим образом. Вы можете использовать forEach для моментального снимка и удалять каждую команду do c.

. Лучшим способом вместо поиска в каждом документе и использования оператора if было бы использование запроса типа where('name', '==', name) и удалите документ таким образом. Использование запроса оставило бы меньше вашей функции.

0 голосов
/ 12 апреля 2020

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

Хорошая новость заключается в том, что вы также можете выполнить запрос, чтобы отфильтровать только те документы, которые вам нужны. интересно, вместо того, чтобы делать на стороне клиента if.

db.collection("contacts").where("name", "==", name)
  .get()
  .then((querySnapshot) => {
    querySnapshot.forEach(doc=>{
      doc.ref.delete()
    })
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...