firebase - 读取具有规则限制的 firebase 实时数据库子集
问题描述
我有一个结构如下的firebase实时数据库:
{
"USERS": {
"user-1": { ... },
"user-2": { ... }
}
"GROUPS": {
"group-1": {
"id": "group-1",
"AUTH": {
"user-1": true,
}
},
"group-2": {
"id": "group-2",
"AUTH": {
"user-2": true
}
},
"group-3": {
"id": "group-3",
"AUTH": {
"user-1": true,
"user-2": true
}
}
}
}
我知道我可以授予仅属于特定组的用户读取权限的读取权限,如下所示:
{
"rules": {
"GROUPS": {
"$groupId": {
".write": false,
".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
}
}
}
}
我试图找到一个查询+规则组合,它将返回登录用户所属的所有组。
例如:登录“user-1”的查询和firebase规则更改返回以下快照:
{
"group-1": {
"id": "group-1",
"AUTH": {
"user-1": true,
}
},
"group-3": {
"id": "group-3",
"AUTH": {
"user-1": true,
"user-2": true
}
}
}
或者
[
{
"id": "group-1",
"AUTH": {
"user-1": true,
}
},
{
"id": "group-3",
"AUTH": {
"user-1": true,
"user-2": true
}
}
]
查询“GROUPS”引用现在给我一个“权限被拒绝”错误。
将 '.read=true' 添加到组中:
{
"rules": {
"GROUPS": {
".read": true,
"$groupId": {
".write": false,
".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
}
}
}
}
或通过条件的“.read”的任何组合,使每个人都可以访问所有数据。
有没有办法(在当前结构中)通过向规则添加一些限制来查询数据库并从“GROUPS”分支获取我所属的所有组?还是我需要在每个用户下维护他所属组的列表?
解决方案
推荐阅读
- java - 如何使用 python/kivy 在 Android 上获取音频(麦克风)输入
- python - 如何通过 discord.py 提及获得某人的用户
- javascript - 获取正确的光栅图像文本的问题
- java - 我应该在单独的机器上安装 ActiveMQ 吗?
- amazon-web-services - 如何检查我的 CDK 堆栈中的所有资源是否具有某些属性?
- opencart - Opencart CDN 的建议
- string - 将带有逗号分隔的浮点数的字符串列转换为 2D NumPy 数组的有效方法?
- javascript - 我想在最后用 jquery 获得有用的链接
- javascript - jQuery:如果单击相同的元素,则删除类
- asp.net-mvc - 使用 .Net Core 发送 HTTP Post