npm“验证器”与“快速验证器”

时间:2018-04-10 08:19:53

标签: node.js npm

我是Node JS的新手,并没有使用任何这些模块。我可以请求帮助这两个验证器中的哪一个更好,更有效地使用?

验证: https://www.npmjs.com/package/validator

快速验证器: https://www.npmjs.com/package/express-validator

非常感谢任何帮助。非常感谢你。

2 个答案:

答案 0 :(得分:2)

它们用于不同的场景:

  • validator是一个用于验证任何类型对象的库,它与任何框架无关。

  • express-validator使用validator库来验证expressjs路由。基本上,您可以使用验证器lib验证快速路由。

在我看来,您可以轻松创建自己的验证器中间件。特别是如果您是Node.js的新手,它将帮助您了解中间件的工作原理。如果您对此不感兴趣,并且express申请可以随时使用express-validator

另外,我真的推荐JOI作为验证器lib https://github.com/hapijs/joi,它很简单,效果很好。

以下是中间件(我尚未测试)的示例

const Joi = require('joi')
module.exports = function validate(joiSchema) {
  return async (req, res, next) => {
    const result = Joi.validate(req.body, joiSchema, {
      allowUnknown: true,
      abortEarly: false
    })

    if (result.error) {
      throw new result.error
    }

    await next()
  }
}

  // express route
  router.post(
    '/create',
    validateMiddleware({
      body: {
        body: { firstName: Joi.string(), lastName: Joi.string() }
      }
    }),
    (req, res, next) => {
    // your logic
   })

答案 1 :(得分:0)

Express-validator用作中间件,express-validator的想法是在错误输入到达您的控制器之前对其进行检查。

现在,如果您使用的是验证器,则可以创建自己的验证函数,在该函数中,您只需传递数据,它就会告诉您输入是否符合要求(就像检查电子邮件一样,这里您可以使用函数,它将检查输入给它的输入是否为函数。

如果您在结构中使用服务,那么可以使用验证器,因为我认为它比express-validator更加容易并且具有更多控制权