我使用快速验证器进行验证.我正在使用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()是一种自定义验证方法,用于检查电子邮件是否尚未注册,它会查询数据库以进行验证.虽然在上面的代码中没有提到,但是我也没有其他的post请求,我需要验证多个字段,数据库查询将在每个字段中进行.
所以我想知道它是否可能并行运行上述每个检查方法,因为这将使它更快,并且我也将更多的节点像.我显然希望使用一个模块来并行运行它们,如异步.我还想知道这些检查方法是否已经并行运行?
请帮我看看吗提前致谢.
解决方法
express-validator旨在验证浏览器/客户端传递的输入; Mongoose的验证是为了验证新创建的文档.两者都有不同的目的,所以你不应该使用一个清晰的答案;你可以使用两者,甚至.
至于验证的顺序:检查将按顺序执行.您可以使用async.parallel()使其看起来像并行执行检查,但实际上它们不会因为检查是同步的.
编辑:节点验证器(因此表达验证器)是一个字符串验证器.测试唯一性不是字符串操作,而是在您的数据模型上运行,因此您不应该尝试使用节点验证器(实际上,我甚至不认为可以).
相反,我建议使用Mongoose的unique
功能来确保电子邮件地址只在数据库中发生一次.
或者,使用支持异步操作的验证器模块,如async-validate
.