使用 Router 通过 Express 庆祝 Joi 验证

Celebrate Joi validation with Express using Router

documentation 展示了如何在应用程序的主文件中使用 celebrate。我的路由已经由 express Router 处理,并且它与我设置应用程序的索引文件分开。

我想在 post 路由上为请求正文设置验证。文档中的示例显示了如何在主文件中进行设置,这部分让我感到困惑,因为我将路由分隔在不同的文件中并且我使用 router.post('/') 而不是 app.post('/') 由于Express Router 的使用。

我应该放在哪里

const { celebrate, Joi, errors } = require('celebrate');

app.use(errors());

到主索引文件还是我的路由文件?

感谢您的帮助。

您需要将 const { celebrate, Joi} = require('celebrate'); 放在路由文件的顶部

然后你可以在你的路由中使用 celebrate 来验证

router.post('/', celebrate({
  body: Joi.object().keys({
    name: Joi.string().required(),
    age: Joi.number().integer(),
    role: Joi.string().default('admin')
  })
}), (req, res) => {});

在您的索引文件中添加到索引文件的顶部

const { errors } = require('celebrate');

然后在最后

app.use(errors())