Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用客户端提供的条件参数化Meteor服务器发布并正确订阅?_Meteor_Iron Router - Fatal编程技术网

如何使用客户端提供的条件参数化Meteor服务器发布并正确订阅?

如何使用客户端提供的条件参数化Meteor服务器发布并正确订阅?,meteor,iron-router,Meteor,Iron Router,我有一个“品味”对象集合,每个对象都包含一个“何时”日期属性。我想发布这些对象的一些不同视图。我在lib/publications.js源代码中添加了以下内容 Meteor.publish('pastTastings', function(now) { check(now, Date); return Tastings.find({when: {'$lt': now}}, {sort: {when: -1}}); }; Meteor.publish('futureTastings', f

我有一个“品味”对象集合,每个对象都包含一个“何时”日期属性。我想发布这些对象的一些不同视图。我在lib/publications.js源代码中添加了以下内容

Meteor.publish('pastTastings', function(now) {
  check(now, Date);
  return Tastings.find({when: {'$lt': now}}, {sort: {when: -1}});
};
Meteor.publish('futureTastings', function(now) {
  check(now, Date);
  return Tastings.find({when: {'$gte': now}}, {sort: {when: 1}});
};
我正在使用Iron Router,并在我的lib/Router.js源代码中设置了以下路由:

Router.route('/past', {
  waitOn: function() {
    return Meteor.subscribe('pastTastings', new Date());
  },
  data: function() {
    return {
      tastings: Tastings.find({when: {'$lt': new Date()}}, {sort: {when: -1}});
    };
  }
});
Router.route('/future', {
  waitOn: function() {
    return Meteor.subscribe('futureTastings', new Date());
  },
  data: function() {
    return {
      tastings: Tastings.find({when: {'$gte': new Date()}}, {sort: {when: 1}});
    };
  }
});
在我的模板中,我引用了从“data”函数返回的对象的“tastings”属性,但是页面继续加载,就好像订阅或客户端tastings查询失败一样


我是否误解了Iron Router和Meteor publish/subscribe是如何协同工作的?如果是这样的话,推荐的方法是什么?

我唯一看到的是IR数据方法的语法问题。尝试直接从中返回对象:

Router.route('/past', {
  waitOn: function() {
    return Meteor.subscribe('pastTastings', new Date());
  },
  data: {
    tastings: function(){ return Tastings.find(); }
  }
});
或者,如果只有这一个数据集,则可以执行
data:function(){return Tastings.find();}