【问题标题】:npm "validator" vs "express-validator"npm“验证器”与“快速验证器”
【发布时间】:2018-04-10 08:19:53
【问题描述】:

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

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

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

任何帮助将不胜感激。非常感谢。

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    它们用于不同的场景:

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

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

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

    另外,我真的推荐 JOI 作为验证器库 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
       })
    

    【讨论】:

    • 嗨,@Marco,感谢您的反馈。我懂了。在不同场景和性能问题上实现的难易程度如何?使用基本的验证器库会更好吗?
    • 我已经更新了我的答案,给你一个如何使用 Joi 实现验证中间件的例子。阅读此内容:expressjs.com/en/guide/writing-middleware.html 如果您想了解中间件概念,它将在未来对其他类型的中间件(身份验证/日志记录/缓存)有所帮助。
    • 如果您不想“重新发明轮子”使用express-validatorgithub.com/continuationlabs/celebrate,这取决于您,这是一个经过良好测试的验证器,如果您想验证您的快速路线,它会起作用。
    • 我明白了。我会阅读您的所有建议并进行研究。非常感谢您的帮助@Marco
    【解决方案2】:

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

    现在,如果您使用验证器,您可以创建自己的验证函数,您只需在其中传递数据,它就会判断输入是否符合它(就像检查电子邮件一样,在这里您可以有一个函数,它将检查给它的输入是否是一个函数)。

    如果你在你的结构中使用服务,那么你可以使用验证器,因为我觉得它比 express-validator 更容易和更可控

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2015-01-19
      相关资源
      最近更新 更多