如何编写firebase规则以仅允许读取部分集合/文档?

时间:2018-05-07 17:14:22

标签: javascript firebase google-cloud-firestore

我正在使用firebase(firestore)开发一个网站,向基于角色的用户显示文章。

因此,数据库包含文章集合

qlt0mPbTBt1rQcrx1HJR: {
    title: 'Article 1'
    description: 'Lorem ipsum, dolor sit amet consectetur adipisicing elit.'
    secretInfo: 'secret text for partners only...'
},
lrTk2ybMLiDuUw6pcwll: {
    title: 'Article 2'
    description: 'Lorem ipsum, dolor sit amet consectetur adipisicing elit.'
    secretInfo: 'secret text for partners only...'
}

部分文章字段是公开的(例如标题/描述),并且应该由所有用户查看,同一篇文章的某些其他字段(例如secretInfo)是私有的,只应由具有特权角色的特定用户查看(合作伙伴) / admins等'...)。

我知道可以根据特定规则“允许读取”来自firebase的集合/文档 - 正如他们的文档中所描述的那样

service cloud.firestore {
  match /databases/{database}/documents {
      // Only the authenticated user who authored the document can read or write
      allow read, write: if request.auth.uid == resource.data.author;
  }
}

https://firebase.google.com/docs/firestore/security/rules-query

但我正在寻求的是有点不同,因为我试图根据firebase数据库规则仅允许 PART 文档。

我不是数据库开发人员,也不确定这是否通常在数据库中完成。

这有可能吗?我错误地接近了这个吗?

非常感谢任何帮助,

谢谢

1 个答案:

答案 0 :(得分:1)

Firestore安全规则不支持限制文档中各个字段的访问权限。用户可以阅读整个文档,也可以不阅读。

如果您希望用户只能部分访问某些文章字段,则应创建两个集合,一个包含公共信息,另一个包含私有信息。然后用限制访问的规则保护私有集合。