我使用的是express-validator版本2.3.0。似乎总是需要字段
req.check('notexist', 'This failed').isInt();
总会失败 - 破碎还是我错过了什么?对于必填字段,有一个notEmpty
方法,似乎表明默认值是可选的,但我无法通过上述方法。
答案 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
答案 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();