当角色是“学生”时,需要parentemail
。否则应为空。
当我提供parentemail
时,以下内容不起作用。
如何验证字段为空,如果不为空,则会发生错误。
parentemail: Joi.string().email().when("role", {
is: "student",
then: Joi.required(),
otherwise: Joi.empty(undefined)
}),
答案 0 :(得分:1)
我不确定您对Joi.empty()
的使用是否正确。文档说:
any.empty(schema)
将与模式匹配的所有内容视为空(未定义)。
建议将其用于扩展Joi对“空”定义的看法。
相反,请尝试以下操作:
Joi.object().keys({
role: Joi.string(),
parentemail: Joi.when('role', {
is: 'student',
then: Joi.string().email().required(),
otherwise: Joi.string().valid([ null, '' ])
})
})
仅当parentemail
为undefined
时,才允许null
为''
,role
或'student'
(类似于值的“空”)
或者,您可以通过将parentemail
更改为
role
为'student'
时完全禁止otherwise
otherwise: Joi.forbidden()