更新对象中嵌套字段中的值 - Firestore

时间:2021-01-08 16:19:28

标签: javascript firebase google-cloud-firestore

我正在尝试更新 Firestore 中的嵌套字段,但我以某种方式覆盖了整个对象。我的数据地图如下所示: enter image description here

我尝试使用以下命令更新 rundatestatus

 //Assume deptName is extrusion

    const item = await db.doc(`orders/${orderId}/batches/${batchNumber}`)
   .update({
     [`batchDeptStatusInfo.${deptName}`]: {
      status:"Scheduled",
      rundate: newRunDate,
    }
   }) 

然而,这会覆盖整个对象。如上所示,conversion 有四个属性,而 extrusion(我尝试更新的属性)只有 2 个。

谁能就这个问题提供一些指导?我看过一些帖子说使用点符号和 update 未设置,我想我选中了这些框

1 个答案:

答案 0 :(得分:1)

当您为字段指定新值时,您指定的值将替换该字段的整个值。服务器不会在现有值和您指定的值之间执行任何类型的修补。

如果要执行粒度更新,请确保指定要设置值的完整路径。

所以:

await db.doc(`orders/${orderId}/batches/${batchNumber}`)
 .update({
   [`batchDeptStatusInfo.${deptName}.status`]: "Scheduled",
   [`batchDeptStatusInfo.${deptName}.rundate`]: newRunDate
 })