当两个值之一或两个都接受时

时间:2019-12-12 06:52:14

标签: javascript node.js joi

具有四个参数:email,phone和email_verified和phone_verified。

我需要一个joi验证

  1. 电子邮件和电话允许。
  2. 电子邮件和电话都允许。
  3. 如果在有效负载中对​​email_verified进行了验证,则电子邮件应该通过。
  4. 如果在有效载荷中对phone_verify进行了验证,则电话应该通过。

    Joi.object().options({abortEarly: false}).keys({
     user: Joi.object().keys({
     email: Joi.string().email(),
     email_verified: Joi.when('email', {
       is : Joi.exist(),
       then: Joi.boolean().strict().required(),
       otherwise: Joi.optional().allow(null).default(false)
     }),
     phone: Joi.string().allow(null),
     phone_verified: Joi.when('phone', {
       is : Joi.exist(),
       then: Joi.boolean().strict().required(),
       otherwise: Joi.optional().allow(null).default(false)
     }), 
    }).xor('email','phone')})
    

有效载荷

{ 
  "email": "elizbethsmith@millicom.com",
  "emailVerified": true,
  "phone": "9012345678",
  "phoneVerified": true
 } 

Joi消息-包含互斥对等体[电子邮件,电话]之间的冲突

0 个答案:

没有答案