Meteor Package - Iron:router - 如何防止我的包路由执行使用它的应用程序的钩子?

时间:2016-04-23 15:01:23

标签: meteor package iron-router

我正在使用iron:router创建一个流星包,效果很好。 该软件包的路由逻辑非常具体。

但是,只要我在Meteor应用程序中添加此程序包(也使用铁路由器),就会调用Meteor应用程序定义的钩子(onBeforeAction,onAfterAction,...)包创建的路由。 我想阻止我的包路由执行应用程序的钩子。

是否有一段简单的代码我可以用来隔离我的包裹的路线与"外部"挂钩?也许我可以创建一个特定的RouteController?

我的最后一个选择是从头开始实现路由器......

谢谢!

2 个答案:

答案 0 :(得分:1)

解决我的问题的代码如下:

let MyRouter = new Iron.Router;
MyRouter.onBeforeAction(Iron.Router.bodyParser.json());
MyRouter.onBeforeAction(Iron.Router.bodyParser.urlencoded({extended: false}));

解决方案是声明一个新的隔离路由器。路由器声明下的2行可以检索POST请求的数据。

答案 1 :(得分:0)

是的,您需要创建隔离控制器:

var MyPackageController = RouteController.extend({
  onBeforeAction: function () { ... },
  onAfterAction: function () { ... }
  /* other options */
});

Router.map(function () {
   this.route('packageRoute', {
      controller: MyPackageController
      /* other options */
   });
});