firebase - 在 Firestore 中使用集合组查询的 Multi-Tenancy 应用程序的最佳实践是什么?

标签 firebase google-cloud-firestore

Multi-Tenancy 应用集合组查询的最佳做法是什么?例如查询租户客户的所有发票

/tenant/1/customer/2/invoices

如果我创建一个名为invoices 的收款组索引,并且我想确保我可以获得租户 1 的所有invoices,我该如何轻松地做到这一点?

我尝试设置一些安全规则来防止查询租户,但它仍然抛出访问被拒绝的错误,因为它仍在跨租户查询。正确的 Firestore 规则应该是什么样的

最佳答案

Firebase 项目不太适合 Multi-Tenancy 应用。建议您为每个租户创建不同的项目。 这将为您在未来避免很多问题。

如果您绝对必须在单个项目上使用 Multi-Tenancy ,则您当前的数据库结构不能很好地支持集合组查询。集合组查询始终查询给定名称的每个集合,无一异常(exception)。您不能使用安全规则来过滤结果,因为 rules are not filters .过滤只能来自客户端,并由安全规则确认。使用您当前的结构,您需要将租户的 ID 存储在您打算使用集合组查询查询的每个文档中,并让客户端使用它作为结果的过滤器。

关于firebase - 在 Firestore 中使用集合组查询的 Multi-Tenancy 应用程序的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56410515/

相关文章:

iOS-图像未显示自定义单元格(Swift)

javascript - firebase cloud firestore嵌套对象中的.add()

ios - 如何在 AVQueuePlayer 播放完 Que 中的所有内容后将其设置为开头

javascript - 获取文档后从 Firestore 获取文档 ID

database - 云 Firestore : Is compound range query in more than 2 fields available now?

firebase - 错误: FacebookSDK has not been initialized yet using react native

java - Recyclerview 不断加载已删除的项目

java - firestore 中的数组对象返回 null,而其他字段则不返回 null

firebase - 无法让StreamBuilder显示来自Cloud Firestore的数据

javascript - Firestore 尚未返回任何记录,我在控制台中看到它们