节点 - 如何访问POST路由中间件中的Req

时间:2013-11-24 18:48:24

标签: javascript node.js express

我是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

1 个答案:

答案 0 :(得分:3)

中间件将始终通过三个参数: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()一样)。