我是Node和Express的新手,我不知道如何在POST路由中的中间件功能中访问req
。我需要将其作为参数传递吗?此路由中还有其他中间件函数访问req
但它没有被传入。总的来说,我猜我对req
如何工作感到困惑...
我所指的功能是helpers.createPermissions()
我的路线
app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions(req), oauth2.server.decision());
功能
exports.createPermissions = function(req) {
console.log(req);
};
错误
ReferenceError: req is not defined
答案 0 :(得分:3)
中间件将始终通过三个参数:req
,res
和next
。
所以你的中间件应该是这样的:
exports.createPermissions = function(req, res, next) {
console.log(req);
// TODO: make sure you eventually call either `next` or send back a response...
};
你可以像这样使用它:
app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions, oauth2.server.decision());
在你看到中间件被称为函数的情况下,这是因为你没有调用中间件本身,而是一个返回中间件函数的函数。例如:
var myMiddlewareWrapper = function() {
// return the actual middleware handler:
return function(req, res, next) {
...
};
};
app.get('/', myMiddlewareWrapper(), ...);
这通常用于将额外选项传递给中间件处理程序(与login.ensureLoggedIn()
一样)。