【问题标题】:Meteor - Return Collection Object from MethodMeteor - 从方法返回集合对象
【发布时间】:2014-12-03 22:36:57
【问题描述】:

我正在尝试根据设置的会话从 Meteor 方法返回一个集合对象。

这是方法调用:

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;
            }
        });
    }
}

这是被调用的方法L

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

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

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

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

    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 帮助器提供给您的模板。

    batchesForSearch 发布函数可能如下所示:

    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}});
      }
    });
    

    请注意,如果搜索为空,我们会小心避免发布整个集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多