У меня есть массив, который содержит несколько записей с двумя датами - start_date
и end_date
, я использую специальный экспресс-валидатор, чтобы убедиться, что start_date
всегда меньше, чем end_date
.Я пытаюсь решить эту проблему, используя Wildcard
Пример массива:
[
{
"start_date":"01-01-1990",
"end_date":"01-01-1991"
},
{
"start_date":"01-01-1990",
"end_date":"01-01-1980"
}
]
Я пробовал вышеупомянутый подход, но второй параметр вПользовательский валидатор не принимает точное значение из массива.
Пользовательский метод валидатора:
module.exports.isValidEndDate = function(value, start_date) {
if (value != null) {
const end_date = moment.utc(value,"DD-MM-YYYY",true).endOf('month');
const start_date = moment.utc(start_date,"DD-MM-YYYY",true).startOf('month');
return starting_date < end_date;
} else {
return false;
}
};
То, как я вызываю вышеуказанный метод, таково::
req.checkBody('array.*.end_date', "end_date is empty or invalid").notEmpty().isValidDate(['array.*.end_date']).isValidEndDate(['array.*.start_date']);
Фактический результат параметра start_date в функции isValidEndDate
будет равен [ 'array.*.start_date' ]
, тогда как я ожидаю, что он будет содержать фактическое значение start_date