首页 文章

如何只显示朋友的帖子? Swift / Firebase

提问于
浏览
1

我刚刚实现了一个朋友添加系统,我正在摸索如何只允许用户看到朋友的帖子 .

在我显示帖子的主屏幕上,我有:

DataService.ds.REF_USERS.child(currentUser!).child("friends").observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in

            for snapshots in snapshot.children.allObjects {
                let snap = snapshots as! FIRDataSnapshot
                var frand = String(snap.key)   
                self.friendsArray.append(frand)
            }

这拉回了他们所有朋友的UID .

然后,我想搜索所有具有该UID作为孩子的帖子 .

我想也许我可以使用equalTo查询通过friendsArray进行for循环...?但后来我不知道如何使用我现有的查询来实现这一点,该查询显示了我想要查看的帖子:

DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").queryStartingAtValue(cutoff).observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in
  • 设置我的帖子并将其附加到数组的代码 -
self.collectionView.reloadData()

    })

我的一些数据结构是:

users
     3093098409384
        friends
            29834098209 : true

posts
     099390234
         userWhoPosted: 29834098209

所以我把朋友拉出了用户 - >朋友 - > UID位,但是我如何找回那些用户发的帖子,那么我正在执行我正常的查询呢?

任何指导表示赞赏 .

1 回答

  • 4

    看看这篇文章:https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html?m=1

    基本上你需要“扇出”你的数据,这意味着将“post”对象数据复制到多个位置,以便更容易访问 . 即:创建一个“时间轴”模式,并在每个用户的uid下,并在该用户的关注者的帖子下 .

    Timeline: {
    <user_uid>: {
    <post_id>: {
    // your post data
    }
    }
    }
    

    您可以通过每次用户提交新帖子,将该帖子发送到其每个关注者的时间线来实现 .

    这可能听起来很奇怪,但Firebase有一个概念,你应该多次复制数据,以便更容易访问 .

相关问题