【发布时间】:2021-10-29 18:19:13
【问题描述】:
我正在验证我正在处理的 API 之一的请求正文,以便在数据库中插入数据。 DB 的精度为 3。
下面是架构 -
const insertDetails = {
body: Joi.object({
id: Joi.string().length(6).required(),
startdate: Joi.date().format('YYYY-MM-DD').required(),
enddate: Joi.date().format('YYYY-MM-DD').required(),
role: Joi.number().valid(5).required(),
fnum: Joi.number().less(1.500).precision(3).required(),
user: Joi.string().max(8).required()
})
}
我的理解是对于 fnum,它只允许小数精度高达 3,如果有像 1.345678 这样的数字表示精度应该是 3,则应该抛出错误。
但是在插入数据时,它会在数据库中四舍五入到小数点后 3 位。
我尝试在线搜索,发现我们可以验证或将转换设置为 false,但我很难仅针对此处的一个字段,即 fnum。
Joi.validate(insertDetails, {"convert": false})
我在上面添加了一行,但它抛出了一个错误提示
TypeError: Joi.validate is not a function
关于如何验证请求中 fnum 的精度以及如果精度更高应该抛出错误的任何建议?
【问题讨论】:
标签: javascript node.js validation joi