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
});
以下のように、ネストされたオブジェクトの名前付き変数の特定のフィールドを更新できます。
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);