Firebase DB-仅允许所有者用户访问集合节点
我想知道是否可以使用firebase DB规则解决我的问题,问题是: 如何编写规则使firebase只响应与已验证用户相关的请求? 我有两个集合Firebase DB-仅允许所有者用户访问集合节点,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我想知道是否可以使用firebase DB规则解决我的问题,问题是: 如何编写规则使firebase只响应与已验证用户相关的请求? 我有两个集合用户和请求。每个用户都有一个请求对象,每个请求对象都有一个用户对象,以便连接两个集合。一个请求与两个用户相关 下面是结构 { "users": { "user1": { "requests": { "req1": true, "req2": true } },
用户
和请求
。每个用户
都有一个请求
对象,每个请求
对象都有一个用户
对象,以便连接两个集合。一个请求
与两个用户
相关
下面是结构
{
"users": {
"user1": {
"requests": {
"req1": true,
"req2": true
}
},
"user2": {
"requests": {
"req1": true
}
}
},
"requests": {
"req1": {
users: {
user1: true,
user2: true
}
},
"req2": {
users: {
user1: true,
user3: true
}
}
}}
我有一个规则来.read/.write,但这只在我请求/requests/someId
时有效:
{
"requests": {
"$request_id": {
".read": "data.child('users').hasChild(auth.uid)",
".write": "data.child('users').hasChild(auth.uid)"
}}
我已经尝试了很多规则组合,但是当我请求
/请求时,我无法仅获得与用户相关的请求
,您不能使用规则“过滤”结果。您只能向该用户有权访问的数据库节点发送查询
解决办法是把事情分开。假设您有一个包含以下密钥的集合:
A、 B、C、D、E、F、G
对于用户ER4521,您需要使用以下内容创建节点ER4521/集合:
B、 D,F,G
第一个请求是获取集合,如果ER4521/collection
然后为每个结果发送一个请求,以获取关于B、D、F和G的所有信息
或者,您将使用云函数将集合复制到userid/集合
尊敬的Peter,以下是Firebase的文档: