2016-07-16 70 views
1

我剛剛實現了一個朋友添加系統,我正在摸索如何只允許用戶看到朋友的帖子。如何只顯示朋友的帖子? Swift/Firebase

在我這裏,我的帖子顯示主屏幕,我有:

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 ...?但當時我不知道如何實現我的現有查詢,顯示回說我想看看帖子:

DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").queryStartingAtValue(cutoff).observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in 

的代碼-bunch,設置了我的文章,並將其添加到一個數組 -

 self.collectionView.reloadData() 

    }) 

我的一些數據結構的是:

users 
    3093098409384 
     friends 
      29834098209 : true 

posts 
    099390234 
     userWhoPosted: 29834098209 

所以我拉着朋友出用戶 - 的>朋友 - > UID位,但我怎麼然後回來職位方面由那些用戶,然後carr我正常的查詢返回我正在做什麼?

任何指導表示讚賞。

回答

4

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

基本上你需要「扇出」您的數據,這意味着複製「後」對象數據到多個位置,使其更容易獲得。 即:創建一個「時間線」模式,並根據該用戶的用戶的uid和該用戶的追隨者的帖子。

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

你做的每一個用戶提交一個新的職位時有,發送後,每一個他的追隨者的時間表。

這可能聽起來很奇怪,但Firebase有一個概念,您應該多次複製數據以使其更容易訪問。

+0

這篇文章太棒了!非常感謝您的參考:) – mohnage7

相關問題