Можно ли проверить, что два свойства объекта типа string
равны, используя Joi
?
Я нашел Joi.ref()
, но мне интересно, есть ли другой способ сделать это. Тем более, что Joi.ref()
, похоже, не поддерживает any.error()
Можно ли проверить, что два свойства объекта типа string
равны, используя Joi
?
Я нашел Joi.ref()
, но мне интересно, есть ли другой способ сделать это. Тем более, что Joi.ref()
, похоже, не поддерживает any.error()
Да, можно проверить, совпадают ли два свойства объекта. И использование Joi.ref()
- предпочтительный способ сделать это.
Если вы хотите использовать настраиваемые сообщения об ошибках, Joi.any.messages()
вариант работает лучше всего. Joi.any.messages()
позволяет перезаписывать различные сообщения об ошибках, которые создает свойство.
Вы также можете использовать параметр Joi.any.error()
, но это не так элегантно и вам нужно будет переключиться между разные коды ошибок (например, string.base
, any.required
, _7 _...)
Joi.any.messages()
const Joi = require('@hapi/joi');
const schema = Joi.object().keys({
first: Joi.string().required(),
second: Joi.string().required().equal(Joi.ref('first'))
.messages({
'string.base': 'second is not a string', // typeof second !== 'string || second === null
'any.required': 'second is required', // undefined
'any.only': 'second must match first' // second !== first
})
});
const value = {
first: 'hello',
second: 'hello',
};
const result = schema.validate(value);
console.log(JSON.stringify(result.error, null, 2));
docker-compose
, спасибо за это! Не могли бы вы подробно описать, что вы пытаетесь делать сany.error()
? Должен ли пароль совпадать с другим и какие сообщения об ошибках вам нужны? - person a1300   schedule 28.09.2019Joi
, не имеет значения. Я просто хочу использоватьJoi
, когда это возможно. - person Alexander Zeitler   schedule 30.09.2019Joi.ref()
- person a1300   schedule 02.10.2019