在Firestore中使用“集合组查询”的多租户应用最佳实践是什么?

时间:2019-06-01 21:20:19

标签: firebase google-cloud-firestore

多租户应用程序集合组查询的最佳做法是什么?例如,查询租户客户的所有发票

/tenant/1/customer/2/invoices

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

我尝试设置一些安全规则以防止对租户进行查询,但是由于仍在跨租户查询,因此它仍然引发Access拒绝错误。正确的Firestore规则会是什么样子

1 个答案:

答案 0 :(得分:1)

Firebase项目不太适合多租户应用程序。建议您为每个租户创建不同的项目。 这将在以后为您节省很多问题。

如果您绝对必须在一个项目上具有多租户,则当前的数据库结构不能很好地支持集合组查询。集合组查询始终查询具有给定名称的每个集合,没有例外。您不能使用安全规则来过滤结果,因为rules are not filters。过滤只能来自客户端,并由安全规则确认。在当前结构下,您需要将租户ID存储在要使用集合组查询查询的每个文档中,并让客户端将其用作结果过滤器。