如何使用Flow Router在Meteor中发布基于URL的数据

时间:2016-07-27 01:18:16

标签: meteor flow-router meteor-publications

我正在尝试在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' } );
  }
});

1 个答案:

答案 0 :(得分: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"));
  }
});