2013-05-01 33 views
0

這是我正在嘗試做的事情。我正在用nodejs express編寫一個應用程序,並試圖將不同部分的應用程序劃分爲不同的模塊。我有一些問題,訪問這個變量在中間件功能如何訪問nodejs中原型方法中的類的this.property

下面是我的路線模塊

"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 
}; 

我無法訪問this.params在ApiHelper的validateRequest對象

回答

0

只通過validateRequest方法即可失去綁定。你可以重新綁定這樣的:

app.get('/check', ApiHelper.validateRequest.bind(ApiHelper), Api.check); 
+0

你好,我實際上是由它以這種方式工作http://pastebin.com/TUewSQ10 你給我介紹,這是更好的方式來完成這項工作? – Yalamber 2013-05-01 10:46:42

+0

我會在你自己的Pastebin代碼中使用該方法:)順便說一句,你爲'validateRequest'的每次調用安裝'express.bodyParser()';中間件應該只安裝一次(在服務器配置期間)。 – robertklep 2013-05-01 10:53:33

+0

你好,我試圖保持屍體解析器在validaterequest這裏建議http://stackoverflow.com/questions/12418372/node-js-express-correct-use-of-bodyparser-middleware。我是否正確? – Yalamber 2013-05-01 10:58:06

相關問題