我想知道我的问题是否可以使用firebase数据库规则解决,这就是问题:
如何编写规则以使firebase只响应与经过身份验证的用户相关的请求?
我有2个集users
和requests
。每个user
都有一个requests
对象,每个requests
对象都有一个users
对象,以便连接两个集合。 request
与两个users
相关。
贝娄是结构
{
"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)"
}}
我一直在尝试很多规则组合,但当我要求requests
user
相关的/requests
答案 0 :(得分:1)
您无法使用规则来过滤'结果。您只能向该用户有权访问的数据库的节点发送查询。
解决方案是将事情分开。让我们假设你有一个带有这些键的集合: A,B,C,D,E,F,G
对于用户ER4521,您需要创建一个节点ER4521 /集合作为内容: B,D,F,G
首先请求是获取ER4521 / collection的集合 然后发送每个结果的请求以获取有关B,D,F和G的所有信息。
或者您将使用云功能将集合复制到用户ID /集合。
问候,彼得