【问题标题】:Valid way to delete a doc from firebase从firebase中删除文档的有效方法
【发布时间】:2021-10-18 22:06:09
【问题描述】:

我想从我的 Firestore 收藏中删除一个游戏,但出现错误:

TypeError: doc 不是函数

我使用的是最新版本的 Firebase。删除文档的正确方法是什么?

import {where,query,deleteDoc,collection, doc, getDocs, getFirestore } from "firebase/firestore";
    
deleteGame(game)  {            
  const db = getFirestore();
  const q = query(collection(db, "history"), where("date", "==", game.date));
  const doc = getDocs(q);
  const quer = await getDocs(q);

  quer.forEach((doc) => 
   {    
       deleteDoc(doc(db, "history", doc.id));
   });
}

【问题讨论】:

  • 不是你的问题的答案,但请记住awaitdeleteDoc 调用,否则你将有浮动承诺。
  • 这取决于他是否想要同步它们 -> 如果他不需要在删除另一个响应之前等待响应,这种方式会更快。他也许应该在 deleteDoc 上使用 catch,但如果他使用 await,每个删除都会等待前一个删除(因此会更慢)。基本上这取决于如果删除失败(继续或停止执行),应用程序应该如何反应

标签: javascript firebase google-cloud-firestore


【解决方案1】:

根据firebase documentation for delete data,您确实应该使用

deleteDoc(doc(db, "history", doc.id));  

但是 doc 需要是从 firebase/firestore 导入的函数。您正在使用 quer ( quer.forEach((doc) => ) 中的元素重写 doc 的值。

您还拥有const doc = getDocs(q);,因此您需要更改两个doc 变量的名称,以便在forEach 回调中使用导入的函数。

另外请记住,这不会是子集合(如果您有任何 - 如文档中所述)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多