更新嵌套对象中的某些字段,而不用传播运算符覆盖其他字段

时间:2019-05-12 14:37:25

标签: google-cloud-firestore google-cloud-functions

如何在不使用扩展运算符覆盖嵌套对象中的其他字段的情况下更新嵌套对象中的某些字段?我的功能如下

exports.handler = ((data, context) => {
const profile = data.profile
const uid = context.auth.uid
const newRef = db.collection("user").doc(uid)


return newRef.update({
    profile: {...profile}
}).then(() => {
        return "Data updated seccusfully"
    })
})

这是为了更新嵌套的配置文件对象。但是,该函数还会删除该对象中所有未指定的字段。有没有什么方法可以通过传播算子来实现更新对象而不删除其他字段,还是必须按照文档中的说明指定每个字段?

db.collection("users").doc("frank").update({
"age": 13,
"favorites.color": "Red"
})

我的个人资料对象针对每种类型的用户包含不同的字段,并且我正在多个位置更新个人资料文件,因此我希望像这样简化它

1 个答案:

答案 0 :(得分:0)

看起来我们可以更新某些对象属性,而无需使用这样的set方法覆盖其他对象。奇怪,它不适用于更新

return newRef.set({
    profile: { ...profile }
}, { merge: true }).then(() => {
    return "Data updated seccusfully"
})

真的很感谢您的帮助