我正在用Firestore为一个小公司建模数据库。
我有一组部门。每个部门都是一个文档。 在公司中,员工永远不会超过50名。我想保留每个员工的地图。
因此部门文档将是这样;
{
emp1: { name: 'tom', age:23, email: 'tom@x.com'},
emp2: { name: 'mike', age:35, email: 'mike@x.com'}
}
我想保留年龄字段为私有,只有超级用户才能访问它。据我了解,不可能将访问级别放在字段的粒度上。客户收到文档后,便可以访问所有字段。
我该怎么做,我应该保留年龄的子集,这样行得通吗?来自SQL,并且已经在SQL中顺利完成了此工作,我无法只为单个整数进行收集。
或者还有其他选择吗?我不想招募员工。
答案 0 :(得分:1)
您具有与一个实体(用户)相关联的数据,该数据应对该数据的不同字段具有不同的权限,如果将这些字段拆分为在该实体下组织的不同子集合中的文档,这将是最简单的。在这种情况下,安全规则将更容易实现。简单的公共/私有数据的情况:
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...**
}