Joi验证长度编号

问题描述

我正在尝试对数字进行长度验证,但似乎无法正常工作,这是我的模式

const schema = createJoiSchema({
  email: Joi.string().required(),password: Joi.string().required(),phone: Joi.number().integer().min(10).max(10).required(),

})

我的测试对象是这个

{
    "email":"[email protected]","password":"miguel123","phone": 1234456789
}

我得到这个错误

"ValidationError: \"phone\" must be less than or equal to 10.

解决方法

由于您在整数上使用了minmax,因此它实际上应该在10 ^ 9(最小10位数字)和10 ^ 10-1(最大)之间有10位数字):

const schema = createJoiSchema({
  email: Joi.string().required(),password: Joi.string().required(),phone: Joi.number().integer().min(1000000000).max(9999999999).required(),})

又名

const schema = createJoiSchema({
  email: Joi.string().required(),phone: Joi.number().integer().min(10**9).max(10**10 - 1).required(),})