Node.js Joi验证-与POST中的日期进行比较

Node.js Joi验证-与POST中的日期进行比较,node.js,validation,hapijs,joi,Node.js,Validation,Hapijs,Joi,我目前正在HapiJS/NodeJS中使用Joi来验证数据。特别是一个帖子有两个ISO日期(开始日期和结束日期),传递给路线并进行验证以确保它们是ISO日期 { method: 'POST', path: '/api/calendar', handler: calendar.getInfo, config: { validate: { payload: { start: Joi.date().

我目前正在HapiJS/NodeJS中使用Joi来验证数据。特别是一个帖子有两个ISO日期(开始日期和结束日期),传递给路线并进行验证以确保它们是ISO日期

{
    method: 'POST',
    path: '/api/calendar',
    handler: calendar.getInfo,
    config: {
        validate: {
            payload: {
                start: Joi.date().iso(),
                end: Joi.date().iso()
            }
        }
    }
}
我知道我可以传递这两个日期,并在控制器中进行一些验证,以确保开始日期早于结束日期(即,开始日期不能为2月,结束日期为1月)

我的问题是,是否有一种方法可以让Joi确定这一点,然后出错?如果需要更多信息,请告诉我

谢谢! T

您可以使用来引用其他值:

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));

这对于
小于
的逻辑来说是很好的和干净的,对于
小于或等于
的逻辑来说有没有这样好的东西?有没有办法做到
更大或更平等