我在尝试 Express 时对验证器感到困惑。
我收到的路由可选参数 flags 应该是整数或整数数组。
在
isArray()
之后链接的自定义验证器的帮助下检查整数部分的数组。
下面是我的验证代码,以及它输入的数据示例。
oneOf([
body("flags").isInt(),
body("flags")
.optional()
.isArray()
.custom((value) => {
//return value.every(Number.isInteger);
if (!value.every(Number.isInteger)) {
throw new Error('permissionFlags should contain Integers only');
}
return true;
}),
], {
message: 'it should be an integer or an array of integers',
}),
允许输入以下所有类型的值,但第一个不是整数数组。
flags: [ 8, 1, 'WRONG_PERMISSION' ] // this is not an int, neither an array of integers.
flags: [ 8, 1 ]
flags: 8
flags: ['WRONG_PERMISSION', 8, 1 ] // however, this wrong array is blocked.
预先感谢您的好建议。
嗯,这个问题在更新版本的快速验证器中得到了解决。 我建议我自己和其他人使用
npm i express-validator@7
进行升级。
祝你好运