Yob*_*Yob 5 javascript validation node.js express joi
我在 JOI 模式中有一个字段,我希望该字段是可选的(即接受未定义,也接受 null),但是如果提供了它的值,则它必须是正整数。我该如何实现这一目标?
这是我到目前为止所尝试过的,验证字段是“容量”,但它似乎不起作用,似乎“.when”语句被忽略了:
const divebarSchema = joi.object({
divebar: joi
.object({
title: joi.string().required(),
capacity: joi.optional().allow(null),
description: joi.string().required(),
location: joi.string().required(),
image: joi.string().optional().allow(""),
map: joi.string().optional().allow(""),
})
.required()
.when(joi.object({ capacity: joi.exist() }), {
then: joi.object({ capacity: joi.number().integer().min(0) }),
}),
});
Run Code Online (Sandbox Code Playgroud)
在上面之前,我最初没有 .when ,而是容量规则是:
capacity: joi.number().optional().allow(null).integer().min(0),
Run Code Online (Sandbox Code Playgroud)
然而,这也不起作用,它在提交空值时不断抛出错误“必须是数字”。
根据 Joi 文档optional
不包括 null 你需要使用allow
capacity: Joi.number().optional().integer().min(0).allow(null)
Run Code Online (Sandbox Code Playgroud)