范围收集组查询

时间:2019-05-16 10:38:08

标签: google-cloud-firestore

考虑多租户Firestore数据库:

/customers/{customerId}/users/{userId}/rosters/{rosterId}

因为似乎collectionGroup的作用域是整个数据库。因此在节点中:

let rosters = db.collectionGroup('rosters').where('isActive', '==', 'true');

将为所有客户返回匹配项。对于客户端,这可以通过安全规则来确定范围。

如何在管理员访问权限中设置范围?

1 个答案:

答案 0 :(得分:0)

集合组查询将应用于具有您指定名称的所有集合。目前,没有其他方法可以限制它们的范围。长期计划是允许对路径进行范围界定,但尚无时间表,何时可用,而且绝对不会在不久的将来。

这意味着您要么需要通过集合名称来缩小范围(例如,如果您有多种类型的名册,则可能需要将users下的集合重命名为{{ 1}},以便可以将collection-group-query限制为仅用户名册),或通过查询中的其他字段条件。

虽然后一种情况可能会让您感觉要回到全局集合,但实际上它仍然比那更好,因为子集合的确提供了更好的 write 吞吐量。