node.js – 快速验证器中的验证

我使用快速验证器进行验证.我正在使用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.

相关文章

现在的js代码都是这种高级点的方式语法 , 就是ts语法 ,要使用ts语法那就要先安装一下 先安装nodejs最...
nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版...
1、安装nodejs 2、在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 3、打开命令...
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串。要连接...
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个...
定义 Object.keys 定义:返回一个对象可枚举属性的字符串数组; Object.getOwnPropertyNames 定义:返回...