Как обойти. Вы можете использовать .lable()
в JOI. Лейбл решит эту проблему
.label()
может обернуть имя атрибута во время выполнения при проверке.например,
body: {
member: Joi.object().required().keys({
id: Joi.string().required(),
phone: Joi.string(),
email: Joi.string().required().regex(/^([a-zA-Z0-9_\-\.]+)@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]+)$/)
}),
member2: Joi.object().required().keys({
id: Joi.string().required(),
phone: Joi.string(),
email: Joi.string().required().regex(/^([a-zA-Z0-9_\-\.]+)@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]+)$/)
})
}
Теперь предположим, что в телефоне member.phone есть ошибка, а member2.phone не
, результат проверки будет phone
не совпадает.это немного сбивает с толку!какой телефон?это member2 или member one?Теперь давайте попробуем использовать .lable()
body: {
member: Joi.object().required().keys({
id: Joi.string().required(),
phone: Joi.string().label('member.phone'),
email: Joi.string().required().regex(/^([a-zA-Z0-9_\-\.]+)@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]+)$/)
}),
member2: Joi.object().required().keys({
id: Joi.string().required(),
phone: Joi.string().label('member2.phone'),
email: Joi.string().required().regex(/^([a-zA-Z0-9_\-\.]+)@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]+)$/)
})
}
, результат проверки теперь будет
error member.phone doesn't match