javascript - 更新嵌套数组对象中的字段值
问题描述
我有看起来像这样的对象:
{
...
someArray: [
{
id: 1548,
amount: 153,
done: 0
}
]
...
}
由于这些对象可能变得非常大,我不能set
每次更新它们时都使用它们,因为每次需要更新文档时发送 100kB 不是一种选择。
为了解决这个问题,我决定使用update
所谓的“点符号”,示例用法是:
update({
'a.b.c': true
})
资料来源:使用 {merge: true} 设置和更新之间的区别
所以我决定试一试,它对“普通”嵌套字段来说就像一个魅力,但我找不到如何为嵌套在数组中的对象做到这一点。
我尝试的是这样的:
update({
'a.someArray.0.done': 153
})
update({
'a.someArray[0].done': 153
})
但是这两个都只是删除了对象并用补丁替换它,这意味着点符号没有被正确识别。
我该如何解决这个问题?这种方法是否有解决方案,还是我应该使用子集合重构它?
解决方案
我相信这可能是您正在寻找的:
var washingtonRef = db.collection("cities").doc("DC");
// Atomically add a new region to the "regions" array field.
washingtonRef.update({
regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia")
});
https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array
推荐阅读
- kubernetes - Istio-在路由前检查另一台主机
- r - 将 scale_shape_manual 制作的图例与命名向量相结合
- git - 如何取回未提交的文件?
- java - 如何使用linkedStack删除特定元素
- c++ - 未能在“”处找到 Qt 组件“Widgets”配置文件
- javascript - AngularJS 绑定不起作用。从 javascript 函数调用 angularjs 函数时
- node.js - 使用 bcryptjs 散列 MySql 数据时出错
- java - 流映射多种类型
- python - 用 Python 制作 Discord Bot 但它不起作用
- ruby-on-rails - 如何合并/合并一个或多个具有可选内容的 PDF?