javascript - 云 Firestore : Update fields in nested objects with dynamic key

标签 javascript firebase google-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"
})

我想使用动态键而不是颜色。

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

这当然是不可能的,会抛出错误。

我一直在尝试这样做:

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

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

最佳答案

我找到了受 firebase 解决方案启发的解决方案(将“/”替换为“.”)。

var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;

db.collection("users").doc("frank").update(usersUpdate);

关于javascript - 云 Firestore : Update fields in nested objects with dynamic key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295541/

相关文章:

angularjs - Cordova/Ionic Firebase Auth 持久登录

javascript - 添加具有特定 ID 的文档而不覆盖现有文档

javascript - 如果所有复选框都被选中,则执行此操作,否则执行此操作(jQuery)

javascript - Android Bowser/混合应用程序模板上的 ionic Material 演示未显示

javascript - Firebase 给出错误 : cannot read property 'ref' of undefined

firebase - 云函数 : check if document exists always return exists

javascript - firebase 数据库调用的数组记录了正确的数据,但长度显示为 0

javascript - Draw2d 文本类型在 ui-bootstrap Accordion angularjs 应用程序中未正确显示

javascript - 在 Phonegap 中加载通知

javascript - Angular 和 Firebase 中的 3 路绑定(bind)导致输入框出现延迟