Joi 验证多个条件
Posted
技术标签:
【中文标题】Joi 验证多个条件【英文标题】:Joi validation multiple conditions 【发布时间】:2014-12-18 00:38:38 【问题描述】:我有以下架构:
var testSchema = Joi.object().keys(
a: Joi.string(),
b: Joi.string(),
c: Joi.string().when('a', 'is': 'avalue', then: Joi.string().required())
);
但我想在 c
字段定义上添加一个条件,以便在以下情况下需要它:
a == 'avalue' AND b=='bvalue'
我该怎么做?
【问题讨论】:
【参考方案1】:Gergo Erdosi 的回答不适用于 Joi 14.3.0
,这导致了 OR
条件:
a === 'avalue' || b === 'bvalue'
以下内容对我有用:
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()
)
)
;
这导致a === 'avalue' && b === 'bvalue'
【讨论】:
是的,我认为这也是一个更好的语法【参考方案2】:您可以连接两个when
规则:
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() ))
;
【讨论】:
如果我想对值进行分组怎么办。比如说什么时候取一组值中的一个并设置验证规则? 我也想要。需要检查键是否在数组中有值。以上是关于Joi 验证多个条件的主要内容,如果未能解决你的问题,请参考以下文章