Джой Валидация - Сравните с датами из 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));
Другие вопросы по тегам