如何使用Joi验证十进制数的精度



我正在验证我正在处理的一个API的请求体,以便在DB中插入数据。DB的精度为3.

使用Joi,我验证

f_num: Joi.number().precision(3).required()

我的理解是,它只允许十进制精度到3,如果有像1.345678这样的数字,应该会抛出错误说精度应该是3。

但是在插入数据时,它会在数据库中四舍五入到小数点后3位。

是否有一种方法可以使用Joi来检查精确的精度?我试着在网上搜索,但找不到任何答案。

使用precision将默认将小数四舍五入到指定的最大值。如果您希望它通过验证失败,请按照文档将convert设置为false:

joi.validate(objectToValidate, schema, {convert:false});

如果你不想禁用全局转换,你可以使用

f_num: Joi.number().precision(3).prefs({ convert: false }).required() 

来源:https://joi.dev/api/?v=17.9.1 anyprefsoptions——aliases-preferences-options

最新更新