Javascript Meteor-从方法返回收集对象

Javascript Meteor-从方法返回收集对象,javascript,meteor,Javascript,Meteor,我正在尝试基于一个集合会话从Meteor方法返回一个collection对象 下面是方法调用: Template.batches.search = function () { if (typeof Session.get('search-parameters') != 'undefined') { var searchParameters = Session.get('search-parameters'); return Meteor.call('s

我正在尝试基于一个集合会话从Meteor方法返回一个collection对象

下面是方法调用:

Template.batches.search = function () {
    if (typeof Session.get('search-parameters') != 'undefined') {

        var searchParameters = Session.get('search-parameters');

        return Meteor.call('search', searchParameters, function(error , result){
            if (error) {
                console.log(error.reason);
            } else{
                return result;
            }
        });
    }
}
下面是被调用的方法

Meteor.methods({
    search: function (session) {
        return Batches.find({event: { $regex: session}});
    }
});

我读到一个方法不能返回一个集合对象,而是使用fetch()。这将返回一个数组,但是,我无法像colleciton对象那样迭代数组以返回结果。请告知。

模板帮助程序需要同步。有几种方法可以解决这个问题,但这里有一个例子:

Template.batches.created = function() {
  // this will be cleaned up for you when the template is destroyed
  this.autorun(function() {
    var search = Session.get('search-parameters');
    Meteor.subscribe('batchesForSearch', search);
  });
};

Template.batches.helpers({
  search: function() {
    var search = Session.get('search-parameters');
    return Batches.find({event: {$regex: search}});
  }
});
batches
模板中,创建一个自动运行,每当会话更改时,该自动运行将订阅
batchesForSearch
。文档到达客户端后,将通过
search
helper提供给模板

batchesForSearch
publish函数的外观如下:

Meteor.publish('batchesForSearch', function(search) {
  check(search, String);

  if (_.isEmpty(search)) {
    // make sure we do not publish the entire collection if search is empty 
    return this.ready();
  } else {
    return Batches.find({event: {$regex: search}});
  }
});
请注意,如果搜索为空,我们会小心避免发布整个集合