假设我有一个包含以下数据的文档(没有子集)
"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
设置为布尔值,然后将其设置为所需对象。有没有更好的方法来获得想要的结果?