我一直在努力在Firebase和Firestore中创建多租户应用程序。当前的结构是这样的:
/users
/companies
/company_user (this links the company and the user, with userId and companyId)
/service1
/service2
基本上,每个公司都可能启用或不启用某些服务,并且用户已分配给公司。用户可以链接到多个公司。
我正在创建一些安全性Firestore规则,并且我希望能够限制对每个服务文档的读/写操作,具体取决于用户是否链接了公司。
大多数基本规则都在起作用,但是我想验证每个用户都可以访问公司,并且公司也可以访问该服务。
从根本上讲,这意味着签入companies_user来查看用户是否链接了公司,然后查看公司是否具有该服务(每个服务文档都有一个companyId字段供验证)
我看不到如何使用get()或exist()完成此操作。
可以做到吗?还是应该重组数据?像这样:
/companies/{company}
/companies/{company}/users
/companies/{company}/service1
/companies/{company}/service2
我不喜欢这样做,因为这意味着到处都有数据,但是也许我不太习惯SQL和NoSQL。
谢谢