在另一个上下文中表达中间件 运行?

Express middleware run in another context?

我正在为 express 创建一个中间件模块,但在 "app.use"

中使用时似乎无法传递对象属性
function test (mytest) {
    this.mytest = mytest;
};

test.prototype.showTest = function (req, res, next) {
    console.log(this.mytest);
    next();
};

var s = new test('foo');

router.post('/login', s.showTest, function (req, res) {
    res.send('test');
});

此代码将输出 "undefined" 而不是 "foo." 如何让它保留对象属性?

Return你在创建对象时的函数:

function test (mytest) {
    return function (req, res, next) {
        console.log(mytest);
        next();
    };
};

var s = test('foo');

router.post('/login', s, function (req, res) {
    res.send('test');
});