Node.js 编号的Hapi/Joi验证失败
我试图验证数字值,它将包括整数和浮点值。下面是我的实现 Joi模式 反对 当我执行上述代码时,我得到一个错误 ValidationError:子v2失败,因为[v2必须是数字] 根据文档,当我们尝试将任何数值作为字符串传递时,它会将值转换为数字,但在本例中,我的值是13。无法转换为数字并引发错误Node.js 编号的Hapi/Joi验证失败,node.js,validation,schema,joi,hapi,Node.js,Validation,Schema,Joi,Hapi,我试图验证数字值,它将包括整数和浮点值。下面是我的实现 Joi模式 反对 当我执行上述代码时,我得到一个错误 ValidationError:子v2失败,因为[v2必须是数字] 根据文档,当我们尝试将任何数值作为字符串传递时,它会将值转换为数字,但在本例中,我的值是13。无法转换为数字并引发错误 是否有任何方法可以将此值转换为13.0?您可以使用正则表达式将数字与点匹配,例如: Joi.string().regex(/\d{1,2}[\,\.]{1}/) 然后使用Joi.alternation
是否有任何方法可以将此值转换为13.0?您可以使用正则表达式将数字与点匹配,例如:
Joi.string().regex(/\d{1,2}[\,\.]{1}/)
然后使用Joi.alternations将两种验证结合起来:
但是,我认为您可能需要使用Numberstring值将有效负载转换为number。您需要检查有效负载类型,如果它不是一个数字,您需要转换它
如果您想了解更多关于示例中使用的正则表达式的信息,可以在这里进行测试:感谢我将实施并检查的解决方案
objnum={
v1:"15",
v2:"13.",
v3:"15"
}
objValidated = Joi.validate(objnum, numcheckschema);
console.log(objValidated);
Joi.string().regex(/\d{1,2}[\,\.]{1}/)
Joi.alternatives().try([
Joi.number().empty("").allow(null),
Joi.string().regex(/\d{1,2}[\,\.]{1}/)
])