我是Node JS的新手,没有使用过这些模块。请问这两个验证器哪一个更好、更高效?
validator: https://www.npmjs.com/package/validator
express-validator: https://www.npmjs.com/package/express-validator
任何帮助都将不胜感激。非常感谢。我是Node JS的新手,没有使用过这些模块。请问这两个验证器哪一个更好、更高效?
validator: https://www.npmjs.com/package/validator
express-validator: https://www.npmjs.com/package/express-validator
任何帮助都将不胜感激。非常感谢。它们用于不同的场景:
validator
是一个库,可用于验证任何类型的对象,并且与任何框架都没有关联。
express-validator
使用validator
库来验证expressjs
路由。基本上,您可以使用validator库直接验证express路由。
在我诚实的意见中,您可以轻松创建自己的验证器中间件。特别是如果您刚接触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
})
Express-validator是用作中间件的,使用express-validator的想法是在到达控制器之前检查不良输入。
现在,如果您正在使用验证器,您可以创建自己的验证函数,在其中只需传递数据即可告诉它输入是否符合要求(就像检查电子邮件一样,这里您可以有一个函数,它将检查输入是否为函数)。
如果您的结构中使用了服务,则可以使用验证器,因为我认为它比express-validator更容易控制。
express-validator
或https://github.com/continuationlabs/celebrate是由众多测试验证的,可以用于验证您的Express路由。这取决于您。 - Marco Talento