Node.js 如何在nodejs中的prototype方法中访问类的this.property
这就是我要做的。我正在用nodejs express编写一个应用程序,并试图将应用程序的不同部分划分为不同的模块。我在访问中间件函数中的这个变量时遇到一些问题 下面是我的路线模块Node.js 如何在nodejs中的prototype方法中访问类的this.property,node.js,Node.js,这就是我要做的。我正在用nodejs express编写一个应用程序,并试图将应用程序的不同部分划分为不同的模块。我在访问中间件函数中的这个变量时遇到一些问题 下面是我的路线模块 "use strict"; function route(params){ var app = params.app; var ApiHelper = require('../library/apiHelper').init(params); //get app.get('/', Api.index);
"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;
我的助理班
"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仅通过
validateRequest
方法将丢失绑定。您可以像这样重新绑定它:
app.get('/check', ApiHelper.validateRequest.bind(ApiHelper), Api.check);
您好,我实际上是这样工作的。您能推荐我哪一种更好的工作方式吗?我自己会在您的Pastebin代码中使用这种方法:)顺便说一句,您正在为每次调用
validateRequest
安装express.bodyParser()
;中间件应该只安装一次(在服务器配置期间)。我这样做对吗?使用它的正常方式是对所有路线只声明一次,除非你真的担心你的网站被攻击(就像你链接到的帖子中的人似乎担心的那样)。另外,bodyParser
仅对POST
路由有意义,并且您正在GET
路由上使用它。只需使用app.use(express.bodyParser())代码>。或者,如果您只想将其传递给POST
routes:var-bodyParser=express.bodyParser();app.post('/route',bodyParser,…)代码>