关于根据子收集值查询数据的实际限制,在Firestore中管理多租户的建议方法是什么?
我希望能够检索并限制对用户所属实体/公司相关数据的访问。
示例数据结构:
/companies/{companyId}/users/
/companies/{companyId}/users/{user}/roles
/companies/{companyId}/docs/
/companies/{companyId}/users/
可以成为一个集合吗?
如何只检索用户在/companies/{companyId}/users
中拥有角色的公司?
答案 0 :(得分:1)
Firestore路径从集合到文档交替再次返回:
/collection/document/subcollection/subdocument
是的,在这种情况下,您会收集companies
,users
和docs
。集合也是隐式,因为它们是在文档存在时自动创建的,并且在没有文档时被删除。
目前,不支持子集合查询(例如“给定公司中的所有用户”),因此您必须以相反的方式构建查询:将公司作为属性的用户集合,查询以查找该公司中的所有用户。
ref.collection('users').where('company', '==', 'ACME').get().then((document) => {/* Do stuff here */});