firestore按字段值删除文档

时间:2020-04-12 02:33:34

标签: vue.js google-cloud-firestore

我的firestore数据库中的每个文档都包含1个字段{name:'some value'}

我想遍历所有文档,然后如果文档的fields值等于我的参数,我想删除该文档

我正在尝试这样做:

removeContact: function(name){
      console.log('removing contact',name)

      db.collection("contacts").forEach(doc=>{
        if(doc.data().name === name){
          doc.delete()
        }
      })

    }

但是我得到未定义forEach()的错误。

2 个答案:

答案 0 :(得分:3)

您需要在收集或查询之后使用.get()来获取查询快照 promise ,然后您将对其进行相应的处理。您可以在快照上使用forEach并删除每个文档。

一个更好的方法,而不是搜索每个文档并使用if语句,将使用类似where('name', '==', name)的查询并以这种方式删除文档。使用查询将使您的工作量减少。

答案 1 :(得分:1)

要删除文档,您需要知道该文档的完整路径。而且由于您不知道文档ID,这意味着您首先需要阅读文档。

好消息是,这意味着您也可以执行查询以仅过滤您感兴趣的文档,而不用执行客户端if

db.collection("contacts").where("name", "==", name)
  .get()
  .then((querySnapshot) => {
    querySnapshot.forEach(doc=>{
      doc.ref.delete()
    })
  })