Firestore 中的多租户

Multitenancy in Firestore

关于基于子集合值查询数据的实际限制,在 Firestore 中管理多租户的建议方法是什么?

我希望能够检索和限制对与 entities/companies 用户所属的数据相关的数据的访问。

示例数据结构:

/companies/{companyId}/users/
/companies/{companyId}/users/{user}/roles
/companies/{companyId}/docs/

可以/companies/{companyId}/users/是一个集合吗?

如何只检索用户在 /companies/{companyId}/users 中拥有角色的公司?

Firestore 路径从集合到文档再返回:

/collection/document/subcollection/subdocument

所以是的,在这种情况下,您将拥有 companiesusersdocs 的集合。集合也是 隐含的,因为它们在其中存在文档时自动创建,而在其中不存在文档时被删除。

目前不支持子集合查询(例如 "all users in a given company"),因此您必须以相反的方式构建查询:将 users 集合与 company 作为 属性 , 在执行查询以查找该公司中的所有用户时。

ref.collection('users').where('company', '==', 'ACME').get().then((document) => {/* Do stuff here */});