hapijs Joi当一个字段非空时必须要求其他字段

时间:2017-11-17 08:42:24

标签: hapijs joi

当密码非空时表示需要其他两个字段。在某些情况下,密码将存在,但是将为空,在这种情况下,不需要其他两个字段。我尝试使用exists()和!empty(),但它不起作用。

password : joi.string().trim().optional().description('Password'), device_type : joi.when('password', {is: (joi.exist() && !joi.empty()), then: joi.number().required().valid(validation.user.device_type.allowOnly).description('Device type')}), device_token : joi.when('password', {is: joi.exist(), then: joi.string().trim().required().description('Device token')})

但这不会起作用

1 个答案:

答案 0 :(得分:2)

您的问题分为两部分:

  1. 将空字符串视为完全没有提交密码的密码。请参阅any.empty(...)
  2. 只要有其他密码,就需要密钥。请参阅object.with(...)
  3. 将它们放在一起并简化您的架构以便清晰(请注意,默认情况下所有键都是可选的):

    condor_submit