服务器端路由方法中的会话对象 - Meteor

Session object in server side routing method - Meteor

我的应用 运行 尝试路由到 root/about

时出现此错误
ReferenceError: Session is not defined at [object Object].route.onBeforeAction (app/lib/routes.js:38:8) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1) at packages/meteor/dynamics_nodejs.js:121:1 at [object Object].urlencodedParser (/home/action/.parts/packages/meteor/1.0/packages/iron_router/.1.0.7.42k4wv++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:72:36) at packages/iron:router/lib/router.js:277:1 at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1) 

这是我在这个位置的路由代码 lib/routes.js:

Router.map(function () {
     this.route('aboutTemplate', {
        name: 'aboutTemplate',
        where: 'server',
        path: '/about',
         onBeforeAction: function(){
           Session.set('active_menu_option','about');
           this.next();
         },
         onAfterAction: function(){

        },
        data: function(){
          return {active_menu_option: {'about':'active'}};
        }
      });
}

我认为发生错误是因为现在这是服务器端路由,会话对象在客户端范围之外不可用。但是有人可以给我更多的信息吗?

另外,当我在做的时候 - 上述方法中的第一个参数代表什么?第一个参数 'aboutTemplate' 与名称参数有何不同 - name: 'aboutTemplate'?

感谢任何帮助

Session 是一个仅限客户端的包,您需要一个自定义包(如问题评论中所述)才能在服务器上获取它。

Iron Router route函数的第一个参数,用于指定参数(例如/posts/:id),Iron Router使用它来猜测几个参数,例如要使用的模板(客户端上的 Router.route('homepage') 将搜索 homepage 模板)。

在那种情况下,Iron Router 也会猜测名称,因此您的代码有点多余(但我个人认为更清晰)。 See more in the guide.