Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 编号的Hapi/Joi验证失败_Node.js_Validation_Schema_Joi_Hapi - Fatal编程技术网

Node.js 编号的Hapi/Joi验证失败

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

我试图验证数字值,它将包括整数和浮点值。下面是我的实现

Joi模式

反对

当我执行上述代码时,我得到一个错误

ValidationError:子v2失败,因为[v2必须是数字]

根据文档,当我们尝试将任何数值作为字符串传递时,它会将值转换为数字,但在本例中,我的值是13。无法转换为数字并引发错误


是否有任何方法可以将此值转换为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}/)
])