2017-05-28 24 views
0

我試圖創建一個後評論關係,用戶可以寫一篇文章,其他用戶可以評論這篇文章。angular angularfire2簡單加入

我可以給的職位,但是當試圖做顯示屬於後我不能評論的加入.. 下面是我的DB模式

firebase db

我的想法是第一我需要從帖子節點獲得密鑰,然後移動到評論,並以某種方式獲得每個帖子的評論.. 並在* ngfor內使用該帖子?

我試圖像

findAllComments(){ 

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

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

    }); 
} 

但這返回,當然無效:

當我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

我不確定我的想法是否正確。

我很困惑,因爲我是新角色和firebase。

回答

0

我想在第一部分,你沒有訂閱評論列表。由於沒有訂閱評論,所以請求獲取來自Firebase的評論列表不會被解僱,因此您沒有看到任何評論。

在第二部分,當您訂閱評論列表時,您將看到它們。

在這些情況下,如果您想根據先前的請求獲取某些內容,可以使用switch/concat/merge Maps。希望這會有所幫助

+0

以及我不明白它.. 我真的不能找到一種方法來返回列表.. 在這樣的財產以後我可以退貨 findAllPosts():可觀察 { 回報this.db.list ('posts',{ query:{ orderByChild:'postTime' } })。map((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