我需要将我的db对象注入到securityHandler对象中,但似乎无法解决该问题。

securityHandler.authenticate方法中,我想访问所有内容:dbrequestresponse

我已经试过了:

app.post('/api/login', securityHandler.authenticate(request, response, db) );




SecurityHandler.prototype.authenticate = function authenticate(request, response, db) {};


编辑:

nane建议将db对象传递给SecurityHandler的构造函数:

var security = new SecurityHandler(db);


SecurityHandler本身看起来像这样:

function SecurityHandler(db) {
    console.log(db); // Defined
    this.db = db;
}

SecurityHandler.prototype.authenticate = function authenticate(request, response, next) {
    console.log(this.db); // Undefined
};


现在,该db对象存在于构造方法中,但由于某些原因在authenticate方法中不可访问。

最佳答案

securityHandler.authenticate(request, response, db)会立即调用authenticate,因为您会将authenticate调用的结果作为回调传递给app.post('/api/login', /*...*/)

您需要这样做:

app.post('/api/login', function(request, response) {
   securityHandler.authenticate(request, response, db) );
});

关于node.js - 依赖注入(inject)快速路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28527984/

10-09 17:54