firestore设置合并真实覆盖对象

问题描述 投票:0回答:2

假设我有一个包含以下数据的文档(没有子集)

"kdsjkasdlkfsalk" : {
    favouriteColor: "brown",
    age: 20,
    content: {
      rand1: "randAns1",
      rand2: "randAns2"
    }
 }

现在我想改变favouriteColor并覆盖content而不改变age。因此我使用:

ref.set({
      favouriteColor: "blue",
      content: {
        newRand: "newRandAns",
        newRand2: "newRandAns2"
      },
    }, {merge:true})

想要的结果:

"kdsjkasdlkfsalk" : {
    favouriteColor: "blue",
    age: 20,
    content: {
      newRand: "newRandAns",
      newRand2: "newRandAns2"
    }
}

实际结果:

"kdsjkasdlkfsalk" : {
    favouriteColor: "blue",
    age: 20,
    content: {
      newRand: "newRandAns",
      newRand2: "newRandAns2",
      rand1: "randAns1",
      rand2: "randAns2"
    }
}

正如你所看到的,{merge:true}可以防止覆盖content而只是增加了新的字段。

我可以想到2个解决方案,但它们要么首先检索所有数据,要么首先将content设置为布尔值,然后将其设置为所需对象。有没有更好的方法来获得想要的结果?

javascript firebase merge google-cloud-firestore
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.