angular angularfire2简单加入
问题描述:
我试图创建一个后评论关系,用户可以写一篇文章,其他用户可以评论这篇文章。angular angularfire2简单加入
我可以给的职位,但是当试图做显示属于后我不能评论的加入.. 下面是我的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();
});
});
}
我得到这个控制台
我不确定我的想法是否正确。
我很困惑,因为我是新角色和firebase。
答
我想在第一部分,你没有订阅评论列表。由于没有订阅评论,所以请求获取来自Firebase的评论列表不会被解雇,因此您没有看到任何评论。
在第二部分,当您订阅评论列表时,您将看到它们。
在这些情况下,如果您想根据先前的请求获取某些内容,可以使用switch/concat/merge Maps。希望这会有所帮助
答
您没有返回任何帖子的子集(您正在查询所有帖子),因此无需在此处添加任何联接。您只需查询所有评论:
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。
以及我不明白它.. 我真的不能找到一种方法来返回列表.. 在这样的财产以后我可以退货 findAllPosts():可观察 { 回报this.db.list ('posts',{ query:{ orderByChild:'postTime' } })。map((arr)=> {return arr.reverse();}).map(FeedData.fromJsonArray)。采取(1); } 但是当内部订阅的帖子,所以我可以得到钥匙与快照我如何返回列表,而不是订阅 我想订阅我的组件,而不是在服务 –
tns