Я пытаюсь проверить некоторые данные с помощью Joi. Тем не менее, я хочу использовать значение по умолчанию, когда предоставленное значение является недействительным. Моя текущая проверка выглядит так:
field: Joi.string()
.optional()
.valid('a', 'b', 'c', 'd')
.default('a', { invalid: true }),
Поэтому, когда я получаю, например, y , возникает ошибка проверки и значение по умолчанию не используется. Любая помощь оценивается
2 ответа
Вы можете использовать alternatives.try(schemas)
, чтобы добиться того, что вы хочу с помощью этой схемы:
const schema = Joi.object().keys({
field: Joi.alternatives().try([
Joi.string().valid('a', 'b', 'c', 'd'),
Joi.empty(Joi.any())
]).default('a')
})
Вы также сможете достичь этого с помощью any.failover(value)
доступно на joi 16.0.0 (еще не выпущено).
Альтернативный ответ @soltex:
default
работает только если значение не установлено. Таким образом, вы можете сбросить значение с помощью empty
. (В основном это то, что я использую, не знаю о отрицательных точках):
const schema = Joi.object().keys({
field: Joi.string().empty(Joi.not(['a', 'b', 'c', 'd'])).default('a')
})
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.