【问题标题】:angular angularfire2 simple joinangular angularfire2 简单连接
【发布时间】:2017-12-22 03:44:40
【问题描述】:

我正在尝试创建一个帖子评论关系​​,用户可以写帖子,其他用户可以评论帖子。

我可以显示帖子,但是在尝试加入以显示属于帖子的 cmets 时,我无法.. 下面是我的数据库架构

我在想,首先我需要从帖子节点获取密钥,然后移动到 cmets 并以某种方式获取每个帖子的 cmets.. 并在帖子的 ngfor 内的 *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();
        });
    });
 }

我进入控制台

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

我很困惑,因为我是 angular 和 firebase 的新手。

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database angularfire2


    【解决方案1】:

    您没有返回帖子的子集(您正在查询所有帖子),因此无需在此处进行任何形式的连接。您可以只查询所有 cmets:

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

    假设您实际上想要检索 cmets 的子集(不是您的示例所描述的),您可以执行以下操作:

    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

    【讨论】:

      【解决方案2】:

      我猜在第一部分中,您没有订阅 cmets 列表。由于没有订阅 cmets,因此不会触发从 firebase 获取 cmets 列表的请求,因此您看不到任何 cmets。

      在第二部分中,当您订阅 cmets 列表时,您会看到它们。

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

      【讨论】:

      • 好吧我不明白..我真的找不到返回列表的方法..像这样我可以返回它 findAllPosts():Observable { return this.db .list('posts',{ query: { orderByChild: 'postTime' } }).map( (arr) => { return arr.reverse(); } ).map(FeedData.fromJsonArray).take(1);但是什么时候在帖子的订阅中,所以我可以通过快照获取密钥,我如何返回列表而不是我想在我的组件中而不是在服务中订阅的订阅
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 2010-11-19
      • 2011-12-18
      相关资源
      最近更新 更多