angular angularfire2简单加入

问题描述:

我试图创建一个后评论关系,用户可以写一篇文章,其他用户可以评论这篇文章。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。

我想在第一部分,你没有订阅评论列表。由于没有订阅评论,所以请求获取来自Firebase的评论列表不会被解雇,因此您没有看到任何评论。

在第二部分,当您订阅评论列表时,您将看到它们。

在这些情况下,如果您想根据先前的请求获取某些内容,可以使用switch/concat/merge Maps。希望这会有所帮助

+0

以及我不明白它.. 我真的不能找到一种方法来返回列表.. 在这样的财产以后我可以退货 findAllPosts():可观察 { 回报this.db.list ('posts',{ query:{ orderByChild:'postTime' } })。map((arr)=> {return arr.reverse();}).map(FeedData.fromJsonArray)。采取(1); } 但是当内部订阅的帖子,所以我可以得到钥匙与快照我如何返回列表,而不是订阅 我想订阅我的组件,而不是在服务 – tns

您没有返回任何帖子的子集(您正在查询所有帖子),因此无需在此处添加任何联接。您只需查询所有评论:

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