Javascript 节点-如何在POST路由中间件中访问Req
我是Node和Express的新手,我不确定如何在POST路由中访问中间件函数中的Javascript 节点-如何在POST路由中间件中访问Req,javascript,node.js,express,Javascript,Node.js,Express,我是Node和Express的新手,我不确定如何在POST路由中访问中间件函数中的req。是否需要将其作为参数传入?此路由中还有其他中间件函数可以访问req,但没有传入。总的来说,我想我对req的工作原理感到困惑 我指的函数是helpers.createPermissions() 我的路线 app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions(
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
中间件将始终传递三个参数:
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());
您可以这样使用它:
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()
)。+1,值得一提的是,如果您的中间件的算术数为4
,则假定为(err,req,res,next)
@maček我出于不使事情复杂化的目的而省略了这个选项,但你绝对正确:)