我正在使用 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();
isUnique() 是一种自定义验证方法,用于检查电子邮件是否尚未注册,它会查询数据库以进行验证。虽然在上面的代码中没有提到,但我还有一些其他的发布请求,我需要验证多个字段,每个字段都会进行数据库查询。
所以我想知道是否可以并行运行上述每个检查方法,因为这会使其更快,并且我也会更喜欢 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/