如何使用Joi实现排除[-1,1]区间的数值校验且支持小数?
Joi数值校验规则调整方案
Joi.number()默认已支持小数类型,你可以从以下两种方案中选一种补充你的校验规则,实现排除[-1,1]闭区间数值的需求:
方案1:内置声明式规则写法(推荐)
无需自定义逻辑,用Joi原生的alternatives规则匹配两种合法取值场景,代码更简洁:
Joi.alternatives() .try( Joi.number().max(-1), // 匹配小于等于-1的数值 Joi.number().min(1) // 匹配大于等于1的数值 ) .required()
方案2:自定义校验写法
如果需要自定义报错文案、后续调整规则更灵活,可以用custom方法实现:
Joi.number() .required() .custom((value, helpers) => { // 数值落在[-1,1]闭区间则判定为不合法 if (value >= -1 && value <= 1) { return helpers.message("数值不能处于[-1,1]闭区间范围内"); } return value; })
两种方案均默认支持整数、小数类型的校验,你可以根据自己的业务场景选择。
内容的提问来源于stack exchange,提问作者YetAnotherBot
相关产品推荐
相关产品推荐

