一尘不染

在Express-Validator中进行验证

node.js

我正在使用express-validator进行验证。我在数据库中使用猫鼬,它还内置了验证功能。我想知道应该使用哪一个?

我还想知道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()是一种自定义验证方法,它检查电子邮件是否尚未注册,它查询数据库以进行验证。尽管在上面的代码中未提及,但是我还有其他一些职位要求,我需要验证多个字段,在每个字段中都将进行数据库查询。

因此,我想知道是否有可能并行运行上述每个check方法,因为这样可以使其运行得更快,也可以让我有更多的节点喜欢。我显然希望使用一个模块像异步一样并行运行这些模块。我还想知道这些检查方法是否已经在并行运行?

请帮我弄清楚吗?提前致谢。


阅读 757

收藏
2020-07-07

共1个答案

一尘不染

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

至于验证顺序:检查将按顺序进行。您可以使用async.parallel()它来使它们 看起来
好像并行执行检查,但实际上,由于检查是同步的,因此不会出现。

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

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

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

2020-07-07