使用publishComposite

时间:2015-07-02 06:42:31

标签: javascript node.js mongodb meteor publish-subscribe

我已从Meteor应用中删除了autopublish。现在我手动发布我的收藏。我有一些相关的收藏品。我想尽可能地提高性能。

例如,如果我正在查看帖子并希望查看与此帖相关的所有评论,我必须使用post: Posts.findOne(postId)comments: Comments.find({postId: postId})查询数据库。我使用iron-router查询数据字段中的两个集合,因此它们出现在我的模板中,但我也订阅了waitOn中的出版物。现在我找到了https://github.com/englue/meteor-publish-composite,它允许我同时发布多个集合。但我不太明白。如果我在Meteor.publishComposite('postAndComments', ...)中使用server/publish.js,则在postAndComments订阅waitOn,并在post中同时设置commentsdata像往常一样,我会在数据库中保存需求吗?对我来说,我仍然查询数据库的次数相同。但是,在发出查询时发出的查询是完成的,{i} data只是检索从数据库中查询过的内容的唯一方法吗?

此外,在示例1中,显示了如何发布带有归属评论和帖子/评论作者的热门帖子,但在模板中,仅输出帖子。我怎样才能输出评论和作者?我误解了publishComments的潜力吗?我理解这是一种联系。

1 个答案:

答案 0 :(得分:0)

我成功使用了publishComposite。在下面的示例中,我订阅了与Units匹配的filter以及这些单位所属的Properties

Meteor.publishComposite('unitsWithProperties', function (filter) {
    var filter = filter || {};
    console.log(filter);
    return {
        find: function () {
            var units;
            units = Units.find(filter);
            return units;
        },
        children: [
            {
                collectionName: 'properties',
                find: function (unit) {
                    return Properties.find({ _id: unit.propertyId });
                }
            }
        ]
    };
});

在你的情况下,我相信你可以:

  • 订阅匹配TopPosts条件的帖子
  • 订阅children:游标数组
  • 中这些帖子的评论和作者

希望这有帮助。

亚历