节点 – 如何访问POST路由中间件中的请求

我是Node和Express的新手,我不确定如何访问POST路由中的中间件function。 我需要将它作为parameter passing吗? 还有其他的中间件function在这条路线访问req但它没有被传入。总的来说,我想我很困惑,如何req工程…

我所指的函数是helpers.createPermissions()

我的路线

 app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions(req), oauth2.server.decision()); 

function

 exports.createPermissions = function(req) { console.log(req); }; 

错误

 ReferenceError: req is not defined 

中间件将总是传递三个参数: reqresnext

所以你的中间件应该是这样的:

 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() )。