Joi validation multiple conditions

╄→гoц情女王★ 提交于 2019-12-04 17:43:32

问题


I have the following schema:

var testSchema = Joi.object().keys({
    a: Joi.string(), 
    b: Joi.string(), 
    c: Joi.string().when('a', {'is': 'avalue', then: Joi.string().required()})
});

but I would like to add a condition on c field definition so that it is required when:

a == 'avalue' AND b=='bvalue'

How can I do that?


回答1:


You can concatenate two when rules:

var schema = {
    a: Joi.string(),
    b: Joi.string(),
    c: Joi.string().when('a', { is: 'avalue', then: Joi.string().required() }).concat(Joi.string().when('b', { is: 'bvalue', then: Joi.string().required() }))
};



回答2:


The answer by Gergo Erdosi didn't work for me with Joi 14.3.0, this gave me an ORcondition:

a === 'avalue' OR b === 'bvalue'

The following worked for me:

var schema = {
  a: Joi.string(),
  b: Joi.string(),
  c: Joi.string().when(
    'a', {
      is: 'avalue',
      then: Joi.when(
        'b', {
          is: 'bvalue',
          then: Joi.string().required()
        }
      )
    }
  )
};

This gave me a === 'avalue' AND b === 'bvalue'



来源:https://stackoverflow.com/questions/26509551/joi-validation-multiple-conditions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!