Обновление НЕКОТОРЫХ полей во вложенном объекте без перезаписи других с помощью оператора распространения - PullRequest
0 голосов
/ 12 мая 2019

Как обновить какое-то поле во вложенном объекте, не перезаписывая другие поля в этом вложенном объекте с помощью оператора распространения?Моя функция выглядит следующим образом:

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 голосов
/ 13 мая 2019

Похоже, мы можем обновить некоторые свойства объекта, не перезаписывая другие с помощью метода set следующим образом. Странно, это не работает с обновлением

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

Очень ценю вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...