发布/订阅标准问题

时间:2013-11-21 08:21:55

标签: meteor

我试图在客户端创建过滤机制。我只发布了尚未删除的藏品; { removed: false }。然后在客户端上,我有时想要添加第二个标准{tag: 'Sports'}。不幸的是,我的代码不起作用。我假设我的订阅参数会扩展发布的标准。也许我错了?

服务器:

Meteor.publish('posts', function() {
    return Posts.find({ removed: false });
});

客户端:

Meteor.subscribe('posts', { tag: 'Sports' })

1 个答案:

答案 0 :(得分:1)

第一种解决方案

服务器:

Meteor.publish('posts', function(query) {
    // if passed query is NULL, then query = {}
    query = query || {};
    // we need to be sure that always we filter by  {removed : false}
    query.removed = false;
    return Posts.find(query);
});

客户端:

Meteor.subscribe('posts',{tag:'Sports'});

第二种解决方案

您的发布功能很好,您在客户端进行第二次过滤。

客户端:

Meteor.subscribe('posts');

第二个标准可以在Template helper中使用:

Template.template_name.posts = function(){
   return Posts.find({tag:'Sports'});
}

你这样使用它:

<template name="posts">
 {{ posts }}
</template>