Ответ 1
Я нашел решение, вдохновленное решением firebase (заменяя "/" на "." ).
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
после официальной документации firestore:
{
name: "Frank",
favorites: { food: "Pizza", color: "Blue", subject: "recess" },
age: 12
}
// To update favorite color:
db.collection("users").doc("frank").update({
"favorites.color": "Red"
})
Я бы хотел использовать динамический ключ вместо цвета.
db.collection("users").doc("frank").update({
"favorites[" + KEY + "].color": true
});
это, конечно, невозможно и будет вызывать ошибку.
Я пытался это сделать:
db.collection("users").doc("frank").update({
favorites: {
[key]: {
color": true
}
}
});
Он фактически обновляется правой клавишей, но, к сожалению, он перезаписывает другие ключи (они удаляются).
Я нашел решение, вдохновленное решением firebase (заменяя "/" на "." ).
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
Это решение работало для меня:
db.collection('users').doc('frank').update({
['favorites.' + key + '.color']: true
});
Вы можете обновлять определенные поля переменной (ly) с именами вложенных объектов, как показано ниже.
ref.set({
name: "Frank",
favorites: { food: "Pizza", quantity: 2 }
});
//now the relevant update code
var name = "favorites";
var qty = 111;
var update = {};
update[name+".quantity"] = qty;
ref.update(update);
Это не работает для меня. Он перезаписывает значение userUpdate, как указано выше.