Egor
Egor

Reputation: 433

Meteor publication not working

I have Iron Router and quite simple pub/sub.

When publication just returns some specific item - everything works fine. But when it does some logic inside (looping thru another collection) - it doesn't work (Iron Router's loading template keeps showing forever, and looks like no data is coming thru DDP from this publication).

The code of 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});
         }
       });
     }
   });

Router config (if needed):

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

Upvotes: 0

Views: 52

Answers (1)

Jeremy S.
Jeremy S.

Reputation: 4659

The problem is with the logic of your publication here:

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

You are returning something from your inner _.each function, but you are not returning anything from the publication function. So the publication is not returning anything to Iron Router or responding with this.ready();.

It is not exactly clear to me what you want to publish - an array of cursors or perhaps an Orders.find() with an $in: [arrayOfItems]? In any case Iron Router should work fine once the publication is fixed.

Upvotes: 1

Related Questions