Meteor Publishing帖子及其评论数量

时间:2015-09-21 02:35:00

标签: meteor

我想发布一系列帖子以及每篇帖子有多少条评论。我一直在使用publishComposite以下方式:

Meteor.publishComposite('postsAndComments', function (limit) {
  var user = Meteor.users.findOne({_id: this.userId});

  return {
    find: function() {
      if (!this.userId) {
        return;
      }

      return Posts.find({
        networkId: user.networkId
      }, {
        sort: {createdAt: -1},
        limit: limit
      });
    },
    children: [
      {
        find: function (post) {
          return Comments.find({postId: post._id});
        }
      }
    ]
  }
});

效率很低,因为我不需要comments中的任何字段。我只需要知道每个numComments post。如果它是一个普通数组,我会_.extend() post对象,但由于你必须返回一个cursor对象,我不确定最好的方法是什么。

目前,我正在考虑将field的{​​{1}}限制为只包含其comment并将其与_id一起返回。

1 个答案:

答案 0 :(得分:0)

为了减少需要通过网络传输的数据量,同时保留在客户端上统计评论的功能,您可以限制从Comments集合中返回的字段数量:

children: [
  {
    find: function (post) {
      return Comments.find({ postId: post._id },{ fields: { _id: 1 }});
    }
  }
]

或者,您可以在numComments集合中加入Posts密钥,并在添加评论时将其保持最新。