5

我正在尝试找出一种在 Firebase 中对以下数据进行建模的方法,但我不确定是否可行。

假设我有一个帖子列表。其中一些我想标记为私人,作者指定他们的朋友列表的成员可以查看它。这是否可能,如果可以,是否可以不单独定义帖子和私人帖子。

4

1 回答 1

5

您可以使用安全规则指定可以读取和写入的帖子。例如,如果我有这个数据集:

{
   "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()"
       }
   }
}

但是请记住,安全规则不能用作过滤器。你不能迭代一个帖子列表,只期望返回那些允许朋友看到的帖子——如果它遇到列表中不可读的项目,那么操作将无法返回结果。

于 2013-07-02T20:26:48.210 回答