Joi 使一系列数字无效

问题描述

我正在尝试支持字段的十进制值,但我想防止数字的包含范围。

预期有效期:

x<=1 || x>=1

所以基本上,我想使范围 [-1,1] 无效。目前,我有这个片段,但需要一些帮助。

Joi.number().required()

解决方法

您可以将 .when.less.greater 结合使用:

Joi.object({
  number: Joi.number().required()
}).when(
  Joi.object({ number: Joi.number().greater(-1).less(1)  }).unknown(),{ then: Joi.object({ number: Joi.forbidden() }) }
)

number 包含在 [-1,1] 之间的值时,它将被禁止。

以下是一些结果:

{ number: 0.9 }   // Validation Error: "number" is not allowed
{ number: 0 }     // Validation Error: "number" is not allowed
{ number: -0.3 }  // Validation Error: "number" is not allowed
{ number: 1 }     // Validation Passed
{ number: -1 }    // Validation Passed
{ number: -13 }   // Validation Passed