【发布时间】:2018-04-10 08:19:53
【问题描述】:
我是 Node JS 的新手,没有使用过任何这些模块。我可以就这两个验证器中的哪一个更好和更有效地使用寻求帮助吗?
验证器: https://www.npmjs.com/package/validator
快速验证器: https://www.npmjs.com/package/express-validator
任何帮助将不胜感激。非常感谢。
【问题讨论】:
我是 Node JS 的新手,没有使用过任何这些模块。我可以就这两个验证器中的哪一个更好和更有效地使用寻求帮助吗?
验证器: https://www.npmjs.com/package/validator
快速验证器: https://www.npmjs.com/package/express-validator
任何帮助将不胜感激。非常感谢。
【问题讨论】:
它们用于不同的场景:
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
})
【讨论】:
express-validator 或github.com/continuationlabs/celebrate,这取决于您,这是一个经过良好测试的验证器,如果您想验证您的快速路线,它会起作用。
Express-validator 用作中间件,express-validator 的想法是在错误输入到达您的控制器之前检查它。
现在,如果您使用验证器,您可以创建自己的验证函数,您只需在其中传递数据,它就会判断输入是否符合它(就像检查电子邮件一样,在这里您可以有一个函数,它将检查给它的输入是否是一个函数)。
如果你在你的结构中使用服务,那么你可以使用验证器,因为我觉得它比 express-validator 更容易和更可控
【讨论】: