Мне нужно создать динамическую схему для проверки моего запроса api-запроса в node js с помощью валидатора Joi в зависимости от ключа в запросе запроса. . Скажем, приведенный ниже шаблон является моими действительными запросами.
Я использую hapi/joi версию 16.1.8
Комбинация 1
{ type: 1, firstname: 'user first name', lastname: 'user last name'}
Комбинация 2
{ type: 2 , salary: 1000, pension: 200}
Комбинация 3
{ type: 3 , credit: 550, debit: 100}
Как видите, ключи объекта различаются в зависимости от значения type. Как с этим справиться правильно?
Мы можем обработать два условия, используя Joi.alternatives, например
const schema = Joi.alternatives().conditional(Joi.object({ type: 1 }).unknown(), {
then: Joi.object({
type: Joi.string(),
firstname: Joi.string(),
lastname: Joi.string()
}),
otherwise: Joi.object({
type: Joi.number(),
salary: Joi.any(),
pension: Joi.any()
})
});
Но как это сделать для 3 условий?