如何在angularFire2中获取键的数量或长度

时间:2017-02-27 23:44:07

标签: javascript ionic2 angularfire2

我在下面有以下firebase数据结构:

-posts
    -postKey1
        +commentKey1
        +commentKey2
        +commentKey3

我需要在给定帖子密钥的情况下获得特定帖子的评论数量。所以上面的数据应该为postKey1返回3。

2 个答案:

答案 0 :(得分:1)

据我所知,如果不下载您想要计算的数据,就无法进行计数。

相反,您可以使用AngularFire2检索postKey1下的所有数据,然后可以计算检索到的帖子。或者,如果您愿意付出努力,可以使用REST API,指定shallow parameter仅检索postKey1下的密钥 - 然后您可以对其进行计数。

答案 1 :(得分:-1)

在html文件的循环内调用计算注释数的方法。

...
<label>{{getCommentCount(post.$key)}} </label>

...

这里的实施对我有用。 numChildren()方法可以解决这个问题。另外我认为preserveSnapshot似乎消除了我遇到的错误(就像无限次调用/获取导致浏览器资源错误不足)。

  getCommentCount(postKey: string) : number{
    let commentCount = 0;
    let url = `/posts/${postKey}`;
    const posts = this.af.database.object(url, { preserveSnapshot: true });
    posts.subscribe(snapshot => {
      commentCount = snapshot.numChildren();
    });
    return commentCount;
  }