我使用以下发布来解决类似的问题。我认为只有一行嵌套的查询会限制反应性。在发布函数中打破一个查询似乎可以避免这个问题。
//on server
Meteor.publish( "articles", function(){
var self= this;
var subscriptions = [];
var observer = Feeds.find({ subscribers: self.userId }, {_id: 1}).observeChanges({
added: function (id){
subscriptions.push(id);
},
removed: function (id){
subscriptions.splice( subscriptions.indexOf(id)) , 1);
}
});
self.onStop( function() {
observer.stop();
});
var visibleFields = {_id: 1, title: 1, source: 1, date: 1, summary: 1, link: 1};
return Articles.find({ feed_id: {$in: subscriptions} }, { sort: {date: -1}, limit: articlePubLimit, fields: visibleFields } );
});
//on client anywhere
Meteor.subscribe( "articles" );
这是另一个SO 示例,如果您认为可以接受,它会通过 subscribe 从客户端获取搜索条件。
更新:由于 OP 努力实现这一目标,我做了一个要点并在meteor.com上推出了一个工作版本。如果您只需要发布功能,则如上所述。