【发布时间】:2020-06-05 05:29:54
【问题描述】:
假设我有两个顶级集合,users 和 companies。 companies 集合包含用户的子集合,称为employees。确保users 和companies/employees 路径中的用户记录同步的最简单方法是什么?使用批处理操作还是触发函数更常见?
【问题讨论】:
标签: google-cloud-platform google-cloud-firestore nosql
假设我有两个顶级集合,users 和 companies。 companies 集合包含用户的子集合,称为employees。确保users 和companies/employees 路径中的用户记录同步的最简单方法是什么?使用批处理操作还是触发函数更常见?
【问题讨论】:
标签: google-cloud-platform google-cloud-firestore nosql
如果您的文档写入直接来自您的客户端应用程序,您可以使用security rules 确保所有文档都具有与批量写入相同的值。如果您正确编写规则,它将强制客户端在所有需要的位置进行适当的批量写入,假设您具有明确定义的文档结构。
您可以在other question 中看到此技术的类似示例,该示例可确保客户端在每次创建和删除时递增和递减文档计数器。你的规则显然会更复杂。
由于安全规则仅适用于客户端代码,因此后端代码没有类似的技术。如果您在后端编写代码,您只需要确保您的批量写入代码都是正确的。
如果您能够进行批量写入,我认为无需触发云函数,因为批量将立即自动生效,而该函数会有一些延迟,并且可能会引发竞争条件,因为您没有保证的执行顺序。
【讨论】: