我正在创建一个聊天系统,并且有一个搜索功能,可以在用户个人资料公开的情况下搜索用户。我的Firebase数据库结构如下。
users:{
$uid1:{
name:"John",
created:13739373,
type:"PRIVATE"
},
$uid2:{
name:"Susan",
created:12393930,
type:"PUBLIC"
},
$uid3:{
name:"Titan",
created:12582938,
type:"CLOSED"
}
}
因此,我为用户这样设置了read
规则。
".read":"data.child('type').val()==='PUBLIC' || //if user is already friend, alse allow type CLOSED"
如果类型是read
或PUBLIC
(如果两个用户已经是朋友),如何为用户完美设置CLOSED
规则。我无法在read
下设置$uid
规则,因为这是搜索功能。
编辑:这是我的friends
路径。
friends:{
$uid1:{
$uid2: 1273738, //friend since timestamp
$uid3: 1274693,
$uid4: 1284869,
...
}
}
Edit2 :PUBLIC
是每个人都可以看到的,PRIVATE
是没有人可以看到/搜索的,CLOSED
是只有朋友可以看到的。
答案 0 :(得分:0)
您必须更新的Firebase实时规则是
"users": {
"$user_id":{
".read": "data.child('type').val() == 'PUBLIC' || (data.child('type').val() == 'CLOSED' && auth != null && root.child('friends').child($user_id).child(auth.uid).val() > 0 ) || (data.child('type').val() == 'PRIVATE' && auth != null && $user_id == auth.uid ) "
}