Предположим, у меня есть документ с следующими данными (без подколлекций)
"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
в логическое значение, а затем устанавливают его в требуемом объекте. Есть ли лучший способ получить желаемый результат?