1. ホーム
  2. javascript

[解決済み] クラウドファイアーストア ネストされたオブジェクトのフィールドを動的キーで更新する

2023-07-31 05:32:55

質問

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);