考虑多租户Firestore数据库:
/customers/{customerId}/users/{userId}/rosters/{rosterId}
因为似乎collectionGroup
的作用域是整个数据库。因此在节点中:
let rosters = db.collectionGroup('rosters').where('isActive', '==', 'true');
将为所有客户返回匹配项。对于客户端,这可以通过安全规则来确定范围。
如何在管理员访问权限中设置范围?
答案 0 :(得分:0)
集合组查询将应用于具有您指定名称的所有集合。目前,没有其他方法可以限制它们的范围。长期计划是允许对路径进行范围界定,但尚无时间表,何时可用,而且绝对不会在不久的将来。
这意味着您要么需要通过集合名称来缩小范围(例如,如果您有多种类型的名册,则可能需要将users
下的集合重命名为{{ 1}},以便可以将collection-group-query限制为仅用户名册),或通过查询中的其他字段条件。
虽然后一种情况可能会让您感觉要回到全局集合,但实际上它仍然比那更好,因为子集合的确提供了更好的 write 吞吐量。