我的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()的错误。
答案 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()
})
})