Запрос на удаление в Firestore - это удаление всего, как это исправить? - PullRequest
0 голосов
/ 29 января 2019

Мне нужно удалить все документы из коллекции, но я должен удалять только там, где «pedido» равно «this.pProdutos».Проблема в том, что даже после запроса удаляются все документы во всей коллекции.Я использую этот код ниже прямо сейчас:

    this.db.collection('produtosPedidos', ref => ref.where('pedido', '==', this.pProdutos)).ref
    .get()
    .then(querySnapshot => {
      querySnapshot.forEach((doc) => {
        doc.ref.delete().then(() => {
          console.log("Document successfully deleted!");
        }).catch(function(error) {
          console.error("Error removing document: ", error);
        });
      });
    })
    .catch(function(error) {
      console.log("Error getting documents: ", error);
    });

1 Ответ

0 голосов
/ 29 января 2019

Проблема вызвана завершающим .ref, который у вас есть в конце вашего запроса здесь:

ref.where('pedido', '==', this.pProdutos)).ref

Первая часть ref.where('pedido', '==', this.pProdutos)) создает запрос, но затем вызывает ref для этогозапрос возвращает CollectionReference для всей коллекции.Снимите трейлинг .ref и все должно заработать.

this.db.collection('produtosPedidos', ref => ref.where('pedido', '==', this.pProdutos))
    .get()
    .then(querySnapshot => {
        ...

Для этого типа операций нет дополнительных преимуществ при запуске его через AngularFire.Я рекомендую просто запустить его на чистом JavaScript SDK, чтобы немного уменьшить код.Поскольку AngularFire построен на основе JavaScript SDK, эти две функции прекрасно взаимодействуют, когда вы делаете это.

В коде:

firebase.firestore().collection('produtosPedidos').where('pedido', '==', this.pProdutos)
    .get()
    .then(querySnapshot => {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...