从Firebase中删除文档

问题描述 投票:0回答:1

我有一个数组,其中包含了firebase的文档id。我需要点击按钮来删除firebase中的这些文档。

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

我怎样才能迭代文档并删除它们?

javascript firebase vue.js
1个回答
2
投票

你可以使用 批量写入 如下所示。

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);
      });

 }
© www.soinside.com 2019 - 2024. All rights reserved.