【问题标题】:Update value in nested field in object - Firestore更新对象嵌套字段中的值 - Firestore
【发布时间】:2021-04-14 09:00:51
【问题描述】:

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

我尝试使用以下命令更新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 未设置,我想我选中了这些框

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

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

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

    所以:

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

    【讨论】:

      猜你喜欢
      • 2019-02-13
      • 2018-08-15
      • 2021-12-15
      • 2018-11-12
      • 2018-11-08
      • 2018-04-27
      • 2019-05-28
      • 2021-02-02
      相关资源
      最近更新 更多