Joi如何验证字段应为空

时间:2019-06-10 11:20:40

标签: joi

当角色是“学生”时,需要parentemail。否则应为空。

当我提供parentemail时,以下内容不起作用。

如何验证字段为空,如果不为空,则会发生错误。

parentemail: Joi.string().email().when("role", {
      is: "student",
      then: Joi.required(),
      otherwise: Joi.empty(undefined)
    }),

1 个答案:

答案 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, '' ])
    })
})

仅当parentemailundefined时,才允许null''role'student'(类似于值的“空”)

或者,您可以通过将parentemail更改为

,在role'student'时完全禁止otherwise
otherwise: Joi.forbidden()