根据param名称创建一个Joi验证,以选择要验证的对应模式
不是Hapi/Joi
这些参数要么是contract-associate,intern-associate,seasonal-associate 全职,要么是
这些模式附在下面
var associate = Joi.object().keys({
Job_title: Joi.string().required(),
work_information: Joi.object().keys({
Full_Name: Joi.string().required(),
Email_Address: Joi.string().required(),
phone_number: Joi.string().required(),
company_Name: Joi.string().required(),
manager_information: Joi.string().required(),
gender: Joi.string().required(),
Date_of_Birth: Joi.string().required(),
manager_information: Joi.string().required(),
})
});
var intern = Joi.object().keys({
Job_title: Joi.string().required(),
work_information: Joi.object().keys({
Full_Name: Joi.string().required(),
Email_Address: Joi.string().required(),
phone_number: Joi.string().required(),
company_Name: Joi.string().required(),
manager_information: Joi.string().required(),
gender: Joi.string().required(),
Date_of_Birth: Joi.string().required(),
manager_information: Joi.string().required(),
university_name: Joi.string().required(),
date_of_graduation: Joi.string().required(),
})
});
var contractor = Joi.object().keys({
Job_title: Joi.string().required(),
work_information: Joi.object().keys({
Full_Name: Joi.string().required(),
Email_Address: Joi.string().required(),
phone_number: Joi.string().required(),
consulting_agency: Joi.string().required(),
})
});
var seasonal = Joi.object().keys({
Job_title: Joi.string().required(),
work_information: Joi.object().keys({
Full_Name: Joi.string().required(),
Email_Address: Joi.string().required(),
phone_number: Joi.string().required(),
duration_of_employment: Joi.string().required(),
manager_information: Joi.string().required(),
})
});以下是我所拥有的
var createAssociateProfile = Joi.object({
params: Joi.object({
name: Joi.string().valid('full-time', 'contract-associate', 'intern-associate', 'seasonal-associate' ).required()
}),
body: Joi.object({
Job_title: Joi.string().required(),
work_information: Joi.object().required().when('params.name',
{ is: 'full-time', then: associate },
{ is: 'contract-associate', then: intern},
{ is: 'intern-associate', then: contractor},
{ is: 'seasonal-associate', then: seasonal},
)
})});
发布于 2021-09-28 12:41:33
通过使用.when('params.name'),您将引用到work_information对象中的对等方。
要引用第一个params对象,您应该执行以下操作:
.when('...params.name')...是对祖父母的引用.
以下是有关相关参考的更多详细信息:
https://github.com/sideway/joi/blob/master/API.md#relative-references
https://stackoverflow.com/questions/69355856
复制相似问题