2015-10-06 54 views
0

我想在同一條路線上驗證兩個不同的有效載荷模式。這兩種有效的選項有:一個路由,兩個有效載荷在Hapi.js與Joi

validate: { 
    payload: { 
    email: Joi.string().required(), 
    password: Joi.string().required() 
    } 
} 

validate: { 
    payload: { 
    token: Joi.string().required() 
    } 
} 

我一直在使用的andor功能,這會非常接近於組合嘗試,但它允許所有三個作爲有效載荷傳遞:

validate: { 
    payload: Joi.object().keys({ 
    email: Joi.string().required(), 
    password: Joi.string().required(), 
    token: Joi.string().required() 
    }).and('email', 'password').or('token', 'email', 'password') 
} 

回答

3

其實我已經搞清楚了。我需要使用xor與兩個依賴項中的一個:

validate: { 
    payload: Joi.object().keys({ 
    email: Joi.string(), 
    password: Joi.string(), 
    token: Joi.string() 
    }).and('email', 'password').xor('token', 'password') 
}