【问题标题】:Easiest way to synchronize a Document across multiple Collections in Firestore?在 Firestore 中跨多个集合同步文档的最简单方法?
【发布时间】:2020-06-05 05:29:54
【问题描述】:

假设我有两个顶级集合,userscompaniescompanies 集合包含用户的子集合,称为employees。确保userscompanies/employees 路径中的用户记录同步的最简单方法是什么?使用批处理操作还是触发函数更常见?

【问题讨论】:

    标签: google-cloud-platform google-cloud-firestore nosql


    【解决方案1】:

    如果您的文档写入直接来自您的客户端应用程序,您可以使用security rules 确保所有文档都具有与批量写入相同的值。如果您正确编写规则,它将强制客户端在所有需要的位置进行适当的批量写入,假设您具有明确定义的文档结构。

    您可以在other question 中看到此技术的类似示例,该示例可确保客户端在每次创建和删除时递增和递减文档计数器。你的规则显然会更复杂。

    由于安全规则仅适用于客户端代码,因此后端代码没有类似的技术。如果您在后端编写代码,您只需要确保您的批量写入代码都是正确的。

    如果您能够进行批量写入,我认为无需触发云函数,因为批量将立即自动生效,而该函数会有一些延迟,并且可能会引发竞争条件,因为您没有保证的执行顺序。

    【讨论】:

    • 如果文档写入不是来自客户端怎么办?例如,如果我运行一些 SaaS 并且只想要使用该应用程序添加自己的客户端?将一些 javascript 作为函数抛出并调用它?
    • 那就是我说的后端案例。您仍然可以进行批量写入,但您必须验证您的代码是否正确 - 没有任何东西能够像安全规则那样“检查”您的工作。
    • 这有点令人失望,但我想这只是 Firestore 的限制。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2020-09-20
    • 2021-04-19
    • 2020-07-24
    • 2020-05-19
    • 1970-01-01
    • 2020-09-30
    相关资源
    最近更新 更多