【问题标题】:Firestore update value in map of maps地图地图中的 Firestore 更新值
【发布时间】:2022-01-08 22:19:03
【问题描述】:

我尝试使用云函数和 Firestore 向地图地图添加值。地图可能不存在,并且不能有带有 personID 键的条目。

现在我正在通过以下代码完成此操作:

if (!userData!.requests){
    userData["requests"] = {};
}
if (!userData!.requests.outgoing){
    userData!.requests["outgoing"] = {};
}

userData!.requests.outgoing[`${personID}`] = data;
t.update(usersRef, userData!);

有没有更简单的方法来做到这一点?有没有不需要先读取数据的方法?

【问题讨论】:

    标签: typescript firebase google-cloud-firestore


    【解决方案1】:

    如果您只有地图,您应该可以use dot notation 编写/更新嵌套字段:

    usersRef.update({
        ["requests.outgoing."+personID]: data
    })
    

    如果您在数据路径中的任何位置都有一个数组,那么这将不起作用。你只能add/remove items in an array而不读取它们,更新任何现有的数组元素需要一个读取-更新-写入周期。

    【讨论】:

    • 我必须添加方括号才能使其工作:["requests.outgoing."+personID]: data
    • 哎呀....很好。当我发布它时,我已经认为代码看起来很奇怪,但无法立即看到。感谢您发现错误并告诉我!
    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 2020-08-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多