17

我目前在 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()
            }
        }
    }
}

我知道我可以通过这两个日期并在控制器中进行一些验证,以确保开始日期早于结束日期(即开始日期不能是二月,结束日期是一月)。

我的问题是,是否有办法让 Joi 确定这一点并出错?如果需要更多信息,请告诉我。

谢谢!吨

4

2 回答 2

42

您可以Joi.ref()用来引用其他值:

end: Joi.date().iso().min(Joi.ref('start'))
于 2015-11-09T19:06:06.063 回答
5

您可以使用比较两个日期喜欢

 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));
于 2018-08-29T08:36:23.583 回答