验证负数到正数范围内的数字 Joi

Suj*_*ari 3 javascript node.js joi

我正在尝试通过 Joi 验证纬度和经度。

允许的纬度数字范围是-90 to +90
允许的经度数字范围是-180 to +180

const schema = Joi.object({
    map_lat: Joi.number()
      .min(-90)
      .max(90)
      .messages({ 'number.base': "Invalid latitude!" }),
    map_lng: Joi.number()
      .min(-180)
      .max(180)
      .messages({ 'number.base': "Invalid longitude!" }),
  })
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误。

错误:限制必须是正整数或引用

我也尝试过:

map_lng: Joi.number()
    .positive()
    .negative()
    .min(-90)
    .max(90)
Run Code Online (Sandbox Code Playgroud)

但仍然遇到同样的错误。
任何人都可以帮助我如何验证 -ve 到 +ve 范围值?

Suj*_*ari 5

我在文档中找到了一种方法greater()less()数字

const schema = Joi.object({
    map_lat: Joi.number()
      .greater(-90)
      .less(90)
      .messages({ 'number.base': "Invalid latitude!" }),
    map_lng: Joi.number()
      .greater(-180)
      .less(180)
      .messages({ 'number.base': "Invalid longitude!" }),
  })
Run Code Online (Sandbox Code Playgroud)

  • 我知道这篇文章有点老了,但是 `.greater(-90)` 肯定会拒绝恰好 -90 的值,而 `.less(90)` 将拒绝恰好 90。 `.min(-90).max( 90)`会更正确。 (3认同)