Bra*_*amH 5 android data-sharing firebase-authentication firebase-realtime-database
我想使用 Firebase 创建可由用户创建的项目列表,然后他可以指定其他用户与之共享该列表(以便他们也可以修改其内容)。我计划使用以下结构来做到这一点:
因此,用户部分指定用户拥有的列表。然后节点“lists”,创建的所有列表都有一个唯一的 id,并且为每个列表指定其成员:
在此示例中,Rick 是列表的管理员,Tom 只是成员。例如,现在我希望规则仅允许在“items”节点下读取和写入(如果用户 ID 存在于“members”节点下)。
现在我有两个问题: 1. 这种方法是否正确,或者我的整个数据结构是否应该为此目的而有所不同?2. 如果结构很好,我应该如何编写规则才能获得上述行为,以及如何为每个列表生成唯一的 id?
乍一看,这似乎是一个合理的起点。我只需将“与键相同的值”替换为简单的true, 以节省一些字节的存储/带宽。除此之外,在不了解所有用例的情况下很难给出更多“硬”建议。
您可能还需要考虑最近的一项更改:安全规则现在可以验证查询,这意味着您可能不需要索引/users/$uid/lists。我建议您尝试一下,看看它是否适合您的用例。
要仅允许该列表的成员读取该列表,可以将这些规则作为起点:
{
"rules": {
"lists": {
"$listid": {
"items": {
".read": "
data.parent().child('members').child('admin').val() === auth.uid ||
data.parent().child('members').child(auth.uid).exists()
"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该规则的第一行.read授予管理员读取权限。然后,第二行向所有其他用户授予读取权限。
最后:一如既往,我建议阅读NoSQL 数据建模并观看面向 SQL 开发人员的 Firebase。
| 归档时间: |
|
| 查看次数: |
3363 次 |
| 最近记录: |