在多个订阅的上下文中处理客户端上的地理查询

我在我的应用程序中有两个不同的订阅:

Meteor.subscribe('collection'); 

  Meteor.subscribe('filtered-collection',param1,param2); 

我想通过不同的模板助手提供数据到不同的模板,分别说allResultsfilteredResults

由于$geoWithin不能在客户端工作,我需要使用它进行过滤,所以我不能仅通过过滤第一个订阅

 filteredResults = Collection.find(selector);` 

因此,我需要一个单独的订阅。

所以,问题是:如何从各自的订阅中find结果集并将其传递给helper?

我终于解决了这个问题。 我不认为这个解决scheme是理想的。

在服务器:

 Collection = new Meteor.Collection('collection'); Meteor.publish('collection',function(){ return Collection.find(); }); Meteor.publish('filteredCollection',function(loc, radius){ var selector = {}; if (radius === undefined) radius = 100; if (loc !== undefined && !(isNaN(loc[0]) || isNaN(loc[1]))) { selector.loc = { $geoWithin: { $centerSphere: [loc, radius / 6371] } }; } var sub = this, handle = null; var handle = Collection.find(selector).observeChanges({ added: function(id, fields) { sub.added("filteredCollection", id, fields); }, changed: function(id, fields) { sub.changed("filteredCollection", id, fields); }, removed: function(id) { sub.removed("filteredCollection", id); } }); sub.ready(); this.onStop(function() { handle.stop(); }); }); 

在客户端:

 Collection = new Meteor.Collection('collection'); FilteredCollection = new Meteor.Collection('filteredCollection'); Meteor.subscribe('collection'); Meteor.subscribe('filteredCollection',loc,radius); Template.collection.helpers({ collection: function(){ return Collection.find(); }, filteredCollection: function(){ return FilteredCollection.find(); } }); 

在客户端, CollectionFilteredCollection是服务器上相同底层集合的两个不同的子集。 但是,这两个子集在caching和持久性方面是否相互依赖,我认为是完全不同的问题。