问题描述
let schema=Joi.array().length(2).items(Joi.number().integer().max(23).min(0).required(),Joi.number().integer().max(59).min(0).required())
if (schema.validate(value).error) {
return {
error: text
}
}
嗨,我对 joi 有一个大问题 我想验证一个长度为 2 的数组,第一个索引是小时,最大值是 23,最小值是 0。第二个索引是分钟,最大值是 59,最小值是 0。
第二条规则运行良好,但是当我输入 24 小时或更多 joi 时,不会返回错误,我无法理解那是什么!!! 对于 arry 的第二个索引,我没有问题,并且大于 59 且小于 0 效果很好 它仅用于第一个索引 我用字符串和 joi 测试第一个索引返回错误,但是当我使用数字 60 或更多时,我没有错误! 注意:sary 英语不好
解决方法
你定义架构的方式,元素的顺序是无关紧要的,这意味着这个例子会通过:
[24,1]
如果要按顺序定义数组元素,则必须将 .items
替换为 .ordered:
Joi.array().length(2).ordered(
Joi.number().integer().max(23).min(0).required(),Joi.number().integer().max(59).min(0).required()
)
这样,第一个元素被强制为 0-23 之间的值,第二个元素为 0-59 之间的值。