У меня есть сценарий, где мне нужно проверить количество ватов с различным регулярным выражением в зависимости от того, в какой стране оно находится. Поэтому, когда поле language
является SE
я хочу использовать это регулярное выражение /^\d{6}-\d{4}$/
на поле company.vatNo
, но когда поле language
является NO
я хочу использовать этот один /^\d{9}(MVA)?$/
.. Я думал, что я мог бы пойти с Joi-х, когда(), но это не кажется работать вообще. Кто-нибудь знает, как я могу это достичь?Проверка Hapi/Joi - разные Joi.regex в зависимости от другого значения ключа
Вот мой маршрут, где я проверить:
module.exports = {
method: 'POST',
path: '/signup/{partner}',
handler: createPartner,
config: {
validate: {
payload: {
language: Joi.string().allow(config.supportedLanguages).required(),
company: {
vatNo: {
Joi
.when('language', {
is: 'SE',
then: Joi.string().regex(/^\d{6}-\d{4}$/).required()
})
.when('language', {
is: 'NO',
then: Joi.string().regex(/^\d{9}(MVA)?$/).required()
})
.when('language', {
is: 'FI',
then: Joi.string().regex(/^\d{7}-\d{1}$/).required()
})
}
}
}
}
}
Благодарности
Почему бы просто не использовать «переключатель», чтобы установить значение регулярного выражения на основе языка? –
Где я могу использовать переключатель в этой ситуации? @JaredSmith – Jojo
У вас есть доступ к заголовку Accept-Language, просто введите код, который проверяет его и назначает соответствующее регулярное выражение переменной, которую вы затем используете для проверки. –