【问题标题】:Does the angularfire6 document update command fail if the document doesn't exist?如果文档不存在,angularfire6 文档更新命令会失败吗?
【发布时间】:2020-11-01 20:59:13
【问题描述】:

当前的 angularfire 文档(Angularfire 6.0.4,2020 年 3 月 30 日的最新提交 d91965e)仅在操作文档时说明了这一点:

AngularFirestore 提供了设置、更新和删除的方法 文档数据。

set(data: T) - 破坏性地更新文档的数据。

update(data: T) - 非破坏性地更新文档的数据。

delete() - 删除整个文档。不删除任何嵌套 收藏。

当直接与 Firebase 交互时(即不使用 angularfirestore),firebase 很清楚,如果文档不存在,更新将失败;必须对新文档使用 set 操作(可能使用 {merge: true} 选项作为安全措施,以防文档存在)。

如果文档不存在,Angular Firestore update(data: T) 命令会做什么?

【问题讨论】:

    标签: javascript google-cloud-firestore angularfire


    【解决方案1】:

    update() 会因为文档不存在而失败。

    如果您需要在一个操作中创建或更新,无论文档是否已存在都不会失败,您应该use set() and pass { merge: true } to it as the second argument。或者,您可以使用事务根据get() 返回的内容进行原子获取和设置操作。

    【讨论】:

    • 谢谢,道格。但是,您的链接指向 Firestore 上的评论。我专门询问 AngularFire,版本 6(我的问题指出了 Firestore 的行为)。 AngularFire 更新很可能包装了低级 Firestore 方法。您能否确认您的答案适用于 AngularFire 6.x?
    • Angularfire 只是核心 JavaScript SDK 的一个包装器。它们有相似的 API。
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2014-09-21
    • 2019-08-04
    • 1970-01-01
    • 2021-09-12
    • 2013-08-14
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多