我正在尝试找出一种在Firebase中建模以下数据的方法,我不确定它是否可行。
说我有一个帖子列表。其中一些我想标记为私有,其中作者指定其朋友列表的成员可以查看它。这是否可能,如果可行的话,可以不单独定义帖子和私人帖子。
答案 0 :(得分:5)
您可以使用security rules指定可以读取和写入的帖子。例如,如果我有这个数据集:
{
"users": {
"me": {
"friends" { "jack", "mary" }
},
},
"posts": {
"post1": {
"owner": "me",
...
}
}
}
我可以使用如下安全规则:
{
"posts": {
"$post_id": {
// any friend can read my post
".read": "auth.uid === data.child('owner').val() || root.child('users/'+data.child.owner.val()+'/friends/'+auth.uid).exists()",
// only I can write it
".write": "auth.uid === data.child('owner').val()"
}
}
}
但请注意,安全规则不能用作过滤器。你不能迭代一个帖子列表,只希望找回朋友可以看到的帖子 - 如果它遇到列表中不可读的项目,那么操作将无法返回结果。