Джой Валидация - Сравните с датами из POST
В настоящее время я использую Joi в HapiJS / NodeJS для проверки данных. В частности, один POST имеет две даты ISO (дату начала и дату окончания), которые передаются на маршрут и проверяются, чтобы убедиться, что они являются датами ISO.
{
method: 'POST',
path: '/api/calendar',
handler: calendar.getInfo,
config: {
validate: {
payload: {
start: Joi.date().iso(),
end: Joi.date().iso()
}
}
}
}
Я знаю, что могу передать эти две даты и выполнить некоторую проверку в контроллере, чтобы убедиться, что начальная дата предшествует конечной дате (т. Е. Начальной датой не может быть февраль, а конечной датой является январь).
У меня вопрос, есть ли способ для Джой определить это вместо этого и вывести ошибку? Дайте мне знать, если потребуется дополнительная информация.
Спасибо! T
2 ответа
Решение
Ты можешь использовать Joi.ref()
для ссылки на другие значения:
end: Joi.date().iso().min(Joi.ref('start'))
Вы можете использовать, чтобы сравнить две даты
const Joi = require('joi');
const messagesUpdateObj = {
startTime: Joi.date().iso().required(),
endTime : Joi.date().iso().greater(Joi.ref('startTime')).required()
};
let schema = Joi.object().keys(messagesUpdateObj);
console.log(Joi.validate({startTime : '2018-08-28T11:46:30.120',endTime : '2018-08-29T11:46:30.120'}, schema));