3

我对 Meteor 很陌生,所以这个问题可能听起来很尴尬。我正在尝试显示所有帖子的列表

Posts = new Meteor.Collection('posts');

然后在 Meteor.publish('posts', ...)

return Posts.find();

并显示与每个帖子相关的许多评论。评论存储在单独的集合中

Comments = new Meteor.Collection('comments')

我不希望用户从数据库中下载所有评论只是为了找出每个帖子的评论数——我不会在这里显示它们。所以

Meteor.publish('comments', function(){
    return Comments.find();
})

不是一种选择。

我知道我可以非规范化数据并将 commentsCount 存储在 Post 文档中。但是还有其他方法可以做到这一点吗?我希望它是可观察的——当然,更确切地说是实时更新。我知道如何在显示单个帖子时执行此操作,但我不知道如何为整个列表执行此操作。

4

2 回答 2

1

你知道你可以在你的发布函数中添加参数吗?

你可以有类似的东西

Meteor.publish('comments', function(post){
    return Comments.find({postId: post._id});
})

这样,您一次只能获得一篇文章的评论。

希望这就是你要找的

于 2013-05-18T18:39:14.807 回答
0

如果您只是在寻找评论的数量,我认为您可以简单地使用:

{{commentsCount}}

所以一个例子是这样的:

<h1>Post Title</h1>
<p>{{commentsCount}} comments</p>

确保在帖子模板中使用它,否则它不会知道它应该计算哪些评论。

于 2013-11-13T15:39:34.007 回答