如何在 Firebase v9 中删除带有 where 查询的文档?

How can I delete a doc with a where query in Firebase v9?

我有一个集合,其中包含几个文档,所有文档都包含一个 id 字段个人。但我不知道如何根据我的查询删除特定文档。 我试过这个:

 const deleteItem = async(item) => {
    const d = query(collection(db, 'allTasks'), where('id', '==', item.id));
    const docSnap = await getDocs(d);
    docSnap.forEach((doc) => {
      console.log(doc.data())
      deleteDoc(doc.data());
    });
  }

但我收到错误消息:[未处理的承诺拒绝:类型错误:t 不是对象。 (评估 t 中的“_delegate”)]

这是错误的方法还是我应该使用批处理? console.log 显示我在

上单击删除的正确项目

deleteDoc() function take DocumentReference 作为参数而不是文档数据。

docSnap.forEach((doc) => {
  deleteDoc(doc.ref); // and not doc.data()
});

此外,使用 batch 删除文档以确保它们全部删除或 none.

可能是个好主意