Удалить документы из Firebase - PullRequest
0 голосов
/ 29 апреля 2020

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

   deletePosts() {
  db.collection("users")
    .doc(user.email)
    .collection("posts")
    .doc(this.selectedPosts[0].id)  
    .delete()
    .then(() => {
      console.log("Success!");
    })
    .catch(err => {
      console.log(err);
    });
  }
},

Как я могу перебирать документы и удалять их?

1 Ответ

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

Вы можете использовать пакетную запись следующим образом:

deletePosts() {

    let batch = db.batch();
    this.selectedPosts[0].forEach(element => {
        batch.delete(db.collection("users").doc(user.email).collection("posts").doc(element.id));
    });
    batch.commit()
    .then(() => {
       console.log("Success!");
    })
    .catch(err => {
       console.log(err);
    });
}

Обратите внимание, что пакетная запись может содержать до 500 операций. Если вы предвидите, что вам может понадобиться удалить более 500, вы можете использовать Promise.all(), как указано ниже:

deletePosts() {

      const promises = [];
      this.selectedPosts[0].forEach(element => {
            promises.push(db.collection("users").doc(user.email).collection("posts").doc(element.id).delete());
      });
      Promise.all(promises);
      .then(() => {
         console.log("Success!");
      })
      .catch(err => {
         console.log(err);
      });

 }
...