node.js - Express-Validator 中的验证

标签 node.js validation express asynchronous express-validator

我正在使用 express-validator 进行验证。我正在使用 Mongoose 作为数据库,它还内置了验证。我想知道我应该使用哪一个?

我还想知道 express-validator 中的验证是否是并行的。以这段代码为例:

req.checkBody('email', 'Invalid email').notEmpty().isEmail().isUnique();
req.checkBody('password', 'Invalid possword').notEmpty().len(8, 30);
req.checkBody('first_name', 'Invalid first_name').notEmpty().isAlpha();
req.checkBody('last_name', 'Invalid last_name').notEmpty().isAlpha();
req.checkBody('dateofbirth', 'Invalid dateofbirth').notEmpty.isDate();

isUn​​ique() 是一种自定义验证方法,用于检查电子邮件是否尚未注册,它会查询数据库以进行验证。虽然在上面的代码中没有提到,但我还有一些其他的发布请求,我需要验证多个字段,每个字段都会进行数据库查询。

所以我想知道是否可以并行运行上述每个检查方法,因为这会使其更快,并且我也会更喜欢 Node 。我显然想使用一个模块来像异步一样并行运行这些模块。我也想知道这些检查方法是否已经并行运行?

请帮我解决这个问题?提前致谢。

最佳答案

express-validator 用于验证浏览器/客户端传递的输入; Mongoose 的验证旨在验证新创建的文档。两者都有不同的用途,因此对于您应该使用哪个没有明确的答案。你甚至可以同时使用两者。

关于验证顺序:检查将按顺序执行。您可以使用 async.parallel() 使其显示 就好像检查是并行执行的,但实际上它们不会,因为检查是同步的。

EDIT:node-validator(因此 express-validator)是一个字符串验证器。唯一性测试不是字符串操作,而是对您的数据模型进行操作,因此您不应该尝试使用 node-validator (事实上,我什至不认为您 可以)。

相反,我建议使用 Mongoose 的 unique确保一个电子邮件地址在您的数据库中只出现一次。

或者,使用支持异步操作的验证器模块,例如 async-validate .

关于node.js - Express-Validator 中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628206/

相关文章:

javascript - 类型错误 : "method" is not a function

xml - 通过 JAXB 验证 XML

json - Laravel:验证 json 对象

typescript - this.$refs.Form.validate 不是我的 vue 组件中的函数

javascript - 中间件取代内置 Express.js 函数有什么意义?

javascript - ExpressJS : Adding routes dynamically at runtime

node.js - 如何从 Angular 2 发布到 Express 服务器

node.js - nodejs - 跳过等待 Promise 后没有解析的语句

node.js - 在 sequelize 中左连接同一张表

javascript - NodeJS Ajax 未传递数组,错误 : "Unexpected token u in JSON at position 0"