我正在验证我正在处理的一个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