首页 > 解决方案 > 验证节点的中间件

问题描述

在我的节点应用程序中,我有以下快速路线。

router.post('/register', asyncMiddleware(async (req, res) => {
   const { error } = validateUser(req.body); 
   if (error) 
      return res.status(400).send(error.details[0].message);

   const { token, user } = await userService.createNewUser(req.body);
   res.header('x-authorization-token', token).send(_.pick(user, ['_id', 'name', 'email']));
}));

处理这样的验证结果是一种好习惯吗?或者我应该将它放入中间件并使用它?如果是这样,我怎样才能将它放入中间件并使用它?

标签: node.jsexpress

解决方案


处理这样的验证结果是一种好习惯吗?

答案是视情况而定。

如果它是一个小项目,或者只有几个 API,或者您只需要验证这条路线,那么您可能可以通过这样的验证来解决问题。

但是,在更大的项目中,您绝对应该有一个单独的验证中间件。
我个人喜欢使用express-validationJoi进行验证。

Joi 非常适合创建灵活而强大的模式来验证传入的请求。和 express-validation 照顾适当的状态和身体。

如果您想查看这方面的示例,请查看我的express-api-structure


推荐阅读