我目前正在HapiJS / NodeJS中使用Joi来验证数据。特别是一个POST有两个ISO日期(开始日期和结束日期),它们被传递给路线并经过验证以确保它们是ISO日期。
{
method: 'POST',
path: '/api/calendar',
handler: calendar.getInfo,
config: {
validate: {
payload: {
start: Joi.date().iso(),
end: Joi.date().iso()
}
}
}
}
我知道我可以通过这两个日期并在控制器中进行一些验证,以确保开始日期在结束日期之前(即,开始日期不能是2月,结束日期是1月)。
我的问题是Joi是否有办法确定这一点并错误输出?如果需要更多信息,请告诉我。
谢谢! Ť
答案 0 :(得分:19)
您可以使用Joi.ref()
来引用其他值:
end: Joi.date().iso().min(Joi.ref('start'))
答案 1 :(得分:0)
您可以用来比较两个日期,例如
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));