Как опубликовать данные на основе URL-адреса в Meteor с помощью Flow Router

Я пытаюсь опубликовать данные, относящиеся к автору документа, в моей коллекции Jobs. Мой маршрут настроен специально для каждого уникального автора, который я затем получаю через FlowRouter.getParam, но он по-прежнему не создает никаких данных. Я подписан на публикацию «refiJobs», но я все еще борюсь. Спасибо за чтение - помощь очень ценится!

Моя публикация

Meteor.publish('refiJobs', function () {
  if (Roles.userIsInRole(this.userId, 'admin')) {
    var author = FlowRouter.getParam('author');
    return Jobs.find({author: author});
  } else {
    this.error(new Meteor.Error(403, "Access Denied"));
  }
});

Мой маршрут:

authenticatedRoutes.route( '/admin/:author', {
  action: function() {
    BlazeLayout.render( 'default',  { yield: 'user' } );
  }
});

person Mike    schedule 27.07.2016    source источник


Ответы (1)


Параметры маршрута недоступны напрямую на сервере, на котором вы создаете публикацию. Вам необходимо передать параметр маршрута в публикацию через подписку следующим образом:

Клиент:

Meteor.subscribe('refiJobs',FlowRouter.getParam('author'));

Сервер:

Meteor.publish('refiJobs',(author)=>{
  check(author,String); // be sure to check the parameter(s) to your publication
  if (Roles.userIsInRole(this.userId, 'admin')) {
    return Jobs.find({author: author});
  } else {
    this.error(new Meteor.Error(403, "Access Denied"));
  }
}); 
person Michel Floyd    schedule 27.07.2016