2016-12-14 12 views
1

私はfirebaseを初めて使用しています。以下に示すように、ユーザと投稿::私は私のデータベース内の2つのノードを持つFirebaseクエリの実装について混乱しています

users 
    uid 
     name: "William" 
     post: 
      KUhyPi5xLZBGyp-_X-W: true 
     -KWH8EVxohgNBfHuKoYy: true 

posts 
    KUhyPi5xLZBGyp-_X-W  
       comment: "I love this" 
    -KWH8EVxohgNBfHuKoYy  
       comment: "Coding is fun" 

現在、私はのtableViewですべての投稿を表示することができています。しかし、私はfacebookのように記事を作ったユーザーの名前を表示できるようにしたい。どのようにここでtableViewcell

内のラベルに表示されるようにそのindexpathで特定のポストを作った人のユーザー名を取得するためのコード私は現在、テーブルビュー

DataService.ds.REF_POST.observe(
     .value, with: { (snapshot) in 
      if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot]{ 
       for snap in snapshot{ 
        print("SNAP: \(snap)") 
        if let postDict = snap.value as? Dictionary<String, AnyObject>{ 

         let key = snap.key 
         let post = Post(postKey: key, postData: postDict) 
         self.posts.append(post) 
        } 
       } 
      } 
      self.tableView.reloadData() 
    }) 

} 
すべての投稿を表示するために使用しています私に教えてください
+0

ユーザーの名前をuidノードから取得し、そのユーザーの投稿IDを取得する必要があります。 次に、投稿ノードについて別のクエリを実行して、さまざまな投稿を取得し、それらの投稿をuidノードにある投稿IDに一致させます。あなたのコードの一部を共有することはできますか? –

+0

@ JordiBruin上記の質問のコードを、私が現在tableViewに入力するために使用しているコードで要求通りに更新しました – codeperfect

+0

tableViewを使用してユーザーとその投稿を表示するのか、投稿を表示するのか? – Jay

答えて

3

コメントを保存するときは、あとで簡単に問い合わせできるように、コメントを保存します。

{ 
    "posts" : { 
     "KUhyPi5xLZBGyp-_X-W": { 
      "uid": "USER_ID", 
      "comment": "I love this" 
     } 
     "-KWH8EVxohgNBfHuKoYy": { 
      "uid": "USER_ID", 
      "comment": "Coding is fun" 
     } 
    } 
} 

私は、これはあなたのデータを複製するように見えるが、これは、彼らはあなたが簡単/迅速にそれを照会できるように、データを格納お勧めする方法で実現しています。たとえば、すべてのyoruコメントを取得すると、すべてのユーザーIDを集めて個々のユーザーを取得します。これをすべて1つのクエリで行う方法はありません。

+0

あなたがアドバイスした通りにそれを実装する方法についてはまだあまり明確ではありません。私はあまりにも多くを求めていないことを願っています – codeperfect

+0

コメントを保存するたびに、userIdを保存してください。 –

+0

はい私はすでにその実装を行っています。私は今、投稿を横にuidを保存して、私は挑戦しているのは、そのユーザーのデータを取得し、配列に追加してテーブルビューにデータを追加することです – codeperfect

関連する問題