【发布时间】:2019-07-08 23:21:27
【问题描述】:
我正在 Firebase 中创建一个应用程序,该应用程序需要确保用户只能读取/写入属于其团队的文档/集合。我的问题基本上是我应该如何构建会员数据。具体来说,这是我正在考虑的一个想法:
/teams/{teamid}
{
displayName: "Company X Team",
owner: "userid",
members: ["email1", "email2", "email3"]
}
/teams/{teamid}/projects/{projectid}
{
name: "My Project"
otherProps: "Other Properties"
}
/users/{userid}
{
displayName: "John Doe",
email: "john.doe@somedomain.com"
}
我是否应该将“成员”作为数组存储为 /teams/ 文档的一部分(如上面的代码示例所示)?还是应该将其存储为自己的文档集合,就像 /projects/ 一样?
我主要关心的是何时去编写安全规则。我想确保只允许所有者或成员更改 /teams/ 及其子集合(例如:/projects/)。
哪种方式更容易编写安全规则?哪一个会有更好的表现?
【问题讨论】:
-
在构建数据之前,您需要考虑如何查询数据。这是最重要的。如果不先了解查询,则该结构将来可能会出现问题。
-
这是非常正确的。当我决定问这个问题时,我正在制定一个查询。具体来说,我想要一个可以搜索 /teams/ 的查询,并告诉我是否邀请了经过身份验证的用户。
标签: firebase google-cloud-firestore firebase-security