2017-05-28 19 views
0

私はポストコメントの関係を作成しようとしているところでは、ユーザーは投稿を書くことができ、他のユーザーは投稿にコメントすることができます。角度anglefire2単純な結合

私は記事を表示するが、ときに私はカントのポストに属しているコメントを表示するために参加をしようとででき...以下 が私のDBスキーマ

firebase db

である私は、最初に考えていました私は投稿ノードからキーを取得し、コメントに移動して、何とか各投稿のコメントを取得する必要があります。 と投稿のngforの中で* ngforで使用しますか?

私は

findAllComments(){ 

    this.db.list('posts', { preserveSnapshot: true}) 

    .subscribe(snapshots=>{ 
     snapshots.forEach(snapshot => { 
      return this.db.list(`comments/${snapshot.key}`) 
     }); 

    }); 
} 

ような何かをしようとしていたが、これは当然のvoidを返す:

私はCONSOLE.LOG:

findAllComments(){ 

    this.db.list('/posts', { preserveSnapshot: true}) 

    .subscribe(snapshots=>{ 
     snapshots.forEach(snapshot => { 
      const kapa = this.db.list(`comments/${snapshot.key}`).do(console.log) 
      kapa.subscribe(); 
     }); 
    }); 
} 

は、私は、コンソールこの

console.logをしてもらいます

これについての私の考えが正しいかどうか分かりません。

私は角度と炎ベースで新しいので混乱しています。

答えて

0

最初の部分では、あなたはコメントリストを購読していないと思います。コメントを購読していないので、firebaseからのコメントのリストを取得する要求は発生せず、コメントも表示されません。

2番目の部分では、コメントリストを購読しているときに、そのコメントが表示されています。

以前のリクエストに基づいて何かを取得したい場合は、switch/concat/mergeマップを使用できます。これが役に立ちますようにお願いします。

+0

さて、私はそれを得るいけない... .. 私はそれを findAllPosts()を返すことができます:観察可能 { リターンthis.db.listを( 'arr)=> {return arr.reverse();}).map(FeedData.fromJsonArray)。テイク(1); } 私はスナップショットでキーを取得できるので、購読ではなくリストを返す方法 私は自分のコンポーネントを購読したいがサービスではない – tns

0

あなたは投稿の一部を返信していません(あなたはすべての投稿を照会しています)ので、ここで何らかの種類の参加をする必要はありません。あなただけのすべてのコメントを照会することができます

findAllComments(){ 
    // {preserveSnapshot: true} is deprecated 
    return this.db.list('/comments').snapshotChanges(); 
} 

は、あなたが実際に(あなたの例が示されているものではありません)コメントのサブセットを取得したいと仮定すると、あなたはこのような何か行うことができます:

this.replies = db.list('AngularFire/joins/messages').snapshotChanges().map(snapshots => { 
    console.log('snapshots', snapshots); 
    return snapshots.map(ss => { 
    return db.list(`AngularFire/joins/replies/${ss.key}`).valueChanges(); 
    }); 
}); 

があります後者の完全な実施例here。このような気にいらで

私は本当にリストを返す方法を見つけるカント
関連する問題