首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joi验证多个条件

Joi验证多个条件
EN

Stack Overflow用户
提问于 2014-10-22 22:13:42
回答 2查看 29.4K关注 0票数 31

我有以下架构:

代码语言:javascript
复制
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'

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 23:52:15

您可以连接两个when规则:

代码语言:javascript
复制
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() }))
};
票数 40
EN

Stack Overflow用户

发布于 2018-12-06 16:36:17

Gergo Erdosi的回答不适用于Joi 14.3.0,这导致了OR条件:

a === 'avalue' || b === 'bvalue'

下面的方法对我很有效:

代码语言:javascript
复制
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'

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26509551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档