Express验证器 - 如何允许可选字段

时间:2014-07-10 16:37:59

标签: node.js validation express

我使用的是express-validator版本2.3.0。似乎总是需要字段

req.check('notexist', 'This failed').isInt();

总会失败 - 破碎还是我错过了什么?对于必填字段,有一个notEmpty方法,似乎表明默认值是可选的,但我无法通过上述方法。

3 个答案:

答案 0 :(得分:40)

您可以使用public static void main (String [] args){ Scanner scanner = new Scanner (System.in); while (scanner.hasNextLine()){ String kString = scanner.nextLine(); if (!kString.equals("0")){ int K = Integer.parseInt(kString); int divX = scanner.nextInt(); int divY = scanner.nextInt(); System.out.println("divX = "+divX+", divY = "+divY); int [] xCords = new int [K]; int [] yCords = new int [K]; for (int i=0; i<K; i++){ xCords[i] = scanner.nextInt(); yCords[i] = scanner.nextInt(); System.out.println ("X = "+xCords[i]+", Y = "+yCords[i]); } kString = scanner.nextLine(); }else{ System.exit(1); } } } 方法:

optional

修改: See the docs here

答案 1 :(得分:9)

对于express-validator 6,它是这样完成的:

check('email').isEmail().optional({nullable: true})

摘自文档:

您可以通过传递带有的对象来自定义此行为 以下选项:

可为空:如果为true,则具有空值的字段将被视为可选字段

checkFalsy::如果为true,则为伪造的值(例如“”,0,false,null) 也将被视为可选

有关optional rule的更多信息。

答案 2 :(得分:3)

这是预期的行为,是的。验证的假设是您希望对已知密钥的值进行操作。为了得到你想要的东西,你可以这样做:

if(req.param('mykey'))
  req.check('mykey', 'This failed').isInt();