我在下面有以下firebase数据结构:
-posts
-postKey1
+commentKey1
+commentKey2
+commentKey3
我需要在给定帖子密钥的情况下获得特定帖子的评论数量。所以上面的数据应该为postKey1返回3。
答案 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;
}