我想基于查询来更新文档中的数据。这是我的代码:
Firestore.instance
.collection("Categories")
.where("userEmail", isEqualTo: "${user?.email}")
.updateData({"category_budget_remaining": _remainingCategoryBudget2})
.then((value){});
我遇到以下错误:未为类型“查询”定义方法“ updateData”
答案 0 :(得分:1)
从API文档中可以看到,where()返回一个Query,而Query没有称为updateData()
的方法。所以,您在这里看到的并不奇怪。
Firestore无法像SQL“ update where”命令那样提供批量更新文档的方法。您将要做的是执行查询以更改文档,对结果集中的文档进行迭代,然后分别更新每个文档。是的,它要求每个文档都读取一个要更改的文档,否,没有其他选择。
答案 1 :(得分:1)
where()
之后,您需要获取文档然后进行更新
where(...).getDocuments().then((val)=>
val.documents.forEach((doc)=> {
doc.reference.updateData({...})
});
});
此代码选择并更新适用于where条件的所有文档。如果只想对1个文档执行此操作,则只需在.limitTo(1)
之前添加getDocuments()
。
答案 2 :(得分:0)
我的答案与@Habib Mahamadi相似,但这是实现此功能的正确且唯一的方法,我的答案与众不同,因为firebase更改了功能名称。
Firestore.instance
.collection("Categories")
.where("userEmail", isEqualTo: "${user?.email}")
.updateData({"category_budget_remaining": _remainingCategoryBudget2})
.then((value)=> value.docs.forEach((element){element.reference.update({"" : ""})});