首页 > 解决方案 > Joi 验证长度数

问题描述

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

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

})

我的测试对象是这个

{
    "email":"miguel@gmail.com",
    "password":"miguel123",
    "phone": 1234456789
}

我得到这个错误

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

标签: javascriptnode.jsvalidationschemajoi

解决方案


由于您在integermin上使用and ,它实际上应该在 10^9 (最小值有 10 位)和 10^10 - 1 (最大值有 10 位)之间:max

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(),
  password: Joi.string().required(),
  phone: Joi.number().integer().min(10**9).max(10**10 - 1).required(),
})

推荐阅读