0

这是我想要做的。我正在用 nodejs express 编写一个应用程序,并尝试将应用程序的不同部分划分为单独的模块。我在中间件函数中访问此变量时遇到问题

下面是我的路线模块

"use strict";
function route(params){
  var app = params.app;
  var ApiHelper = require('../library/apiHelper').init(params);
  //get
  app.get('/', Api.index);
  app.get('/check', ApiHelper.validateRequest, Api.check);
}
module.exports = route;

我的 ApiHelper 类

"use strict";
function ApiHelper(params){
  this.params = params;
}
module.exports.init = function (params){
  return new ApiHelper(params);
};
ApiHelper.prototype.validateRequest = function validateRequest(req, res, next){
  console.log(this.params);//this is undefined
};

我无法访问 ApiHelper 的 validateRequest 对象中的 this.params

4

1 回答 1

0

通过仅传递方法,您将失去绑定validateRequest。你可以像这样重新绑定它:

app.get('/check', ApiHelper.validateRequest.bind(ApiHelper), Api.check);
于 2013-05-01T10:29:13.643 回答