expressjs - 使用中间件功能

时间:2014-06-14 11:41:38

标签: node.js express

我想知道如何将以下代码移动到一个单独的函数(在同一个文件中),并在我调用POST或PUT路由来添加或更新文档时调用它。

我正在使用https://www.npmjs.org/package/express-validator

以下是我的POST路线,但是当我更新记录时,仍然需要验证标题。

app.post('/docs', auth, function (req, res) {
  req.checkBody('title', 'Title is required').notEmpty();
  var errors = req.validationErrors();

  if(errors){
    res.json(400, { errors: errors });
    return;
  }

  //go ahead and save the document

});

我尝试过制作自己的函数,但我不确定在哪里放var errors = req.validationErrors();,或者从单独的函数返回400错误是不好的做法。

非常感谢任何帮助/代码。

1 个答案:

答案 0 :(得分:0)

middleware function的正文与您现在使用的代码几乎完全相同,只有两个显着的差异:

  • 该函数确保req.method为POST或PUT。
  • 验证通过时调用next()函数。这将触发链中的下一个中间件功能,或路由处理程序。
app.use('/docs', function(req, res, next) {
  if (req.method == 'POST' || req.method == 'PUT') {
    req.checkBody('title', 'Title is required').notEmpty();
    var errors = req.validationErrors();
    if (errors) {
      res.json(400, { errors: errors });
      return;
    }
  }
  next();
});

app.post('/docs', auth, function (req, res) {
  // go ahead and save the document
});