2016-07-16 9 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を子として持つすべての投稿を検索したいと考えています。

多分私はforループをfriendsArrayでequalToクエリを使って行うことができると考えました...?その後私は私が見たいよポストをバック示している私の現在、既存のクエリーを持つことを実装するかどうかはわかりません。私のポストを設定し、配列に追加したコードの

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

-bunch - 私のデータ構造の

 self.collectionView.reloadData() 

    }) 

いくつかは次のとおりです。 - > UIDビットが、どのように私はそれから作られた投稿を取り戻すん

users 
    3093098409384 
     friends 
      29834098209 : true 

posts 
    099390234 
     userWhoPosted: 29834098209 

だから私はusers->友人のうちの友人を引っ張っていますそれらのユーザーによって、そして次に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