使用路由器通过 Express 庆祝 Joi 验证

k6p*_*6r6 2 node.js express joi

文件显示了如何使用庆祝在应用程序的主文件。我的路由已经由 express Router 处理,它与我的应用程序设置的索引文件分开。

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

我应该放在哪里

const { celebrate, Joi, errors } = require('celebrate');
Run Code Online (Sandbox Code Playgroud)

app.use(errors());
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助。

Pet*_*ger 5

你需要把const { celebrate, Joi} = require('celebrate');你的路线文件的顶部

然后你可以在你的路线中使用庆祝进行验证

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

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

const { errors } = require('celebrate');
Run Code Online (Sandbox Code Playgroud)

然后在最后

app.use(errors())
Run Code Online (Sandbox Code Playgroud)