【问题标题】:Joi validation length numberJoi 验证长度数
【发布时间】:2020-12-11 03:24:40
【问题描述】:

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

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.

【问题讨论】:

  • 你有什么问题?

标签: javascript node.js validation schema joi


【解决方案1】:

由于您在 整数 上使用 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(),
  password: Joi.string().required(),
  phone: Joi.number().integer().min(10**9).max(10**10 - 1).required(),
})

【讨论】:

  • 不错的尝试,但它不适用于以 0 开头的数字
  • 以0开头的数字被认为是八进制,而不是十进制:0777(以8为底)= 511(以10为底)
猜你喜欢
  • 1970-01-01
  • 2019-04-07
  • 2014-11-02
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2017-07-28
相关资源
最近更新 更多