我正在用Firestore为一家小公司建一个数据库。
我有一个部门的集合。每个部门都是一份文件。在公司里,员工人数永远不会超过50人。我希望将每个员工都作为一张地图。
因此,部门文档将是这样的;
{
emp1: { name: 'tom', age:23, email: 'tom@x.com'},
emp2: { name: 'mike', age:35, email: 'mike@x.com'}
}我想保持年龄字段私有,它应该是由超级用户访问。据我所知,不可能将访问级别设置为字段的粒度。当客户端收到文档时,他将有权访问所有字段。
我该怎么做呢,我应该保留一个年龄的子集,这样行吗?我来自SQL,并且已经在SQL中顺利地完成了这一点,我不能考虑只有一个整数的集合。
或者还有其他选择吗?我不想有一个雇员的集合。
发布于 2019-09-09 14:52:05
如果您有与一个实体(用户)相关联的数据,而该实体(用户)应该对该数据的不同字段具有不同的权限,那么将这些字段拆分到该实体下组织的不同子集中的文档将是最容易的。在这种情况下,安全规则将更容易实现。简单的公有/私有数据的情况:
users/{uid}/public
- data
- name
- email
users/{uid}/private
- data
- age然后,您的规则分别针对每个子集合:
match /users/{uid}/public {
allow read: true;
}
match /users/{uid}/private {
allow read: if **...whatever conditions you choose, if any...**
}https://stackoverflow.com/questions/57848769
复制相似问题