Joi验证 - 与POST的日期比较

tdo*_*pot 10 validation node.js hapijs joi

我目前正在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()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我的问题是,如果有一种方法让Joi确定这个并且出错了吗?如果需要更多信息,请与我们联系.

谢谢!Ť

Ger*_*osi 22

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

end: Joi.date().iso().min(Joi.ref('start'))
Run Code Online (Sandbox Code Playgroud)

  • 这对于“小于”逻辑来说很好而且很干净,对于“小于或等于”有什么好的吗? (3认同)

Ift*_*ani 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));
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法做到“greaterOrEqual”? (2认同)