我正在尝试更新 Firestore 中的嵌套字段,但我以某种方式覆盖了整个对象。我的数据地图如下所示:
我尝试使用以下命令更新 rundate
和 status
:
//Assume deptName is extrusion
const item = await db.doc(`orders/${orderId}/batches/${batchNumber}`)
.update({
[`batchDeptStatusInfo.${deptName}`]: {
status:"Scheduled",
rundate: newRunDate,
}
})
然而,这会覆盖整个对象。如上所示,conversion
有四个属性,而 extrusion
(我尝试更新的属性)只有 2 个。
谁能就这个问题提供一些指导?我看过一些帖子说使用点符号和 update
未设置,我想我选中了这些框
答案 0 :(得分:1)
当您为字段指定新值时,您指定的值将替换该字段的整个值。服务器不会在现有值和您指定的值之间执行任何类型的修补。
如果要执行粒度更新,请确保指定要设置值的完整路径。
所以:
await db.doc(`orders/${orderId}/batches/${batchNumber}`)
.update({
[`batchDeptStatusInfo.${deptName}.status`]: "Scheduled",
[`batchDeptStatusInfo.${deptName}.rundate`]: newRunDate
})