我有这个集合
"connection-requests":{
"push-key1":{
"foo":"bar",
"biz":"baz",
"user1":{
"some-info":"",
"uid":"user1uid"
},
"user2":{
"some-info":"",
"uid":"user2uid"
}
}
}
我希望这个集合只有uid
出现在这个集合中的两个用户才能读写。
这是我的数据库规则:
"connection-requests": {
"$key": {
".read": "root.child('connection-requests').child($key).child('user1/uid').val() == auth.uid || root.child('connection-requests').child($key).child('user2/uid').val() == auth.uid",
".write": "root.child('connection-requests').child($key).child('user1/uid').val() == auth.uid || root.child('connection-requests').child($key).child('user2/uid').val() == auth.uid",
}
}
我使用此请求访问数据:
db.ref('connection-requests')
.orderByChild('user1/uid')
.equalTo(uid) // <- auth.uid of user
.once('value')
.then()
.catch()
上述规则不起作用,我的猜测是.child($any)
部分有问题,但我不确定是什么。
提前致谢。
答案 0 :(得分:0)
每条规则的结束双引号都是错误的。它不是在行的末尾,而是跟随OR运算符:
auth.uid || "root.child
^
^
应该是:
"connection-requests": {
"$key": {
".read": "root.child('connection-requests') ... == auth.uid",
".write": "root.child('connection-requests') ... == auth.uid",
}
}