流星出版物不起作用

时间:2015-06-24 20:38:25

标签: meteor

我有Iron Router和非常简单的pub / sub。

当发布只返回一些特定项目时 - 一切正常。但是当它在内部做一些逻辑时(通过另一个集合循环) - 它不起作用(Iron Router的加载模板一直显示,看起来没有数据来自本出版物的DDP)。

pub的代码:

    Meteor.publish('ordersWithState', function(orderState) {
     // if uncommented, this line works just fine
     //return Orders.find({name:"C02336"});

     var temp = Workflows.findOne({name:"CustomerOrder"});
     if (temp) {
       var stateUuid;
       _.each(temp.state, function (state) {
         if (state.name == orderState) {
           return Orders.find({stateUuid: state.uuid});
         }
       });
     }
   });

路由器配置(如果需要):

this.route('ordersList', {
path: '/orders/list/:orderState?',
loadingTemplate: 'loading',
waitOn: function() {
  console.log("in ordersList waitOn");
  var orderState = this.params.orderState || "Требуется закупка";
  return [
    Meteor.subscribe('ordersWithState', orderState),
    Meteor.subscribe('allSuppliersSub'),
    Meteor.subscribe('tempCol'),
    Meteor.subscribe('workflows')
  ];
},
data: function () {
  return Orders.find({});
},
onBeforeAction: function (pause) {
  this.next();
}
});

1 个答案:

答案 0 :(得分:1)

问题在于您的出版物的逻辑:

if (temp) {
   var stateUuid;
   _.each(temp.state, function (state) {
     if (state.name == orderState) {
       return Orders.find({stateUuid: state.uuid});
     }
   });
 }

您正在从内部_.each函数返回一些内容,但是您没有从发布函数返回任何内容。因此,该出版物未向Iron Router返回任何内容或使用this.ready();进行回复。

我不清楚你要发布什么 - 一组游标或Orders.find() $in: [arrayOfItems]?无论如何,一旦出版物得到修复,Iron Router就可以正常工作。