Cloud Firestore:使用动态键更新嵌套对象中的字段

14 浏览
0 Comments

Cloud Firestore:使用动态键更新嵌套对象中的字段

按照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"
})

我想使用动态键而不是color。

db.collection("users").doc("frank").update({
    "favorites[" + KEY + "].color": true
});

这当然是不可能的,并且会引发错误。

我一直尝试这样做:

db.collection("users").doc("frank").update({
    favorites: {
        [key]: {
            color": true
        }
    }
});

实际上,它正在使用正确的键进行更新,但不幸的是,它正在覆盖其他键(它们正在被删除)。

admin 更改状态以发布 2023年5月21日
0
0 Comments

这个解决方案对我有效:

db.collection('users').doc('frank').update({
  [`favorites.${key}.color`]: true
});

0
0 Comments

我找到了一个受 Firebase 解决方案启发的答案(用“/”替换“.”)。

var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);

0