2017-10-16 56 views
1

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

我希望能够检索并限制对用户所属实体/公司相关数据的访问。

实施例的数据结构:

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

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

我该如何才能检索到用户在/companies/{companyId}/users中拥有角色的公司?

+0

通常建议为不同的环境使用单独的项目,而不是将它们放在一个项目中。如果你这样做,你将会对每个Firebase产品有更好的隔离和访问控制。 –

回答

1

公司的FireStore路径候补从收集到的文件,然后再返回:

/collection/document/subcollection/subdocument 

所以,是的,在这种情况下,你将有companiesusersdocs集合。集合也是隐式因为它们是在文档存在于文档中时自动创建的,并且当文档中不存在文档时将被删除。

目前,子集合查询(例如,“给定公司中的所有用户”)不受支持,因此您必须以其他方式构建查询:将公司的用户集合作为属性,何时执行查询以查找该公司中的所有用户。

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

非常感谢@ mike-mcdonald – Remi

+0

@ mike-mcdonald您可以谈谈或指出我与用户身份验证的关系吗?我还想限制用户的访问权限,我觉得我们需要做的是能够为用户分配公司ID,然后限制读取/写入分配有该公司ID的子文档的读/写。 否则在这个例子中用户不能访问所有其他用户的数据?谢谢! – Shaun