Joi 验证 - 与 POST 中的日期进行比较
Posted
技术标签:
【中文标题】Joi 验证 - 与 POST 中的日期进行比较【英文标题】:Joi Validation - Compare to dates from POST 【发布时间】:2016-02-10 11:33:54 【问题描述】:我目前在 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 是否有办法确定这一点并出错?如果需要更多信息,请告诉我。
谢谢! T
【问题讨论】:
【参考方案1】:您可以使用Joi.ref()
引用其他值:
end: Joi.date().iso().min(Joi.ref('start'))
【讨论】:
这对于less than
逻辑来说很好很干净,有没有和less than or equal to
一样好的东西?【参考方案2】:
您可以使用Like比较两个日期
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));
【讨论】:
有没有办法做到greaterOrEqual
?
.min 可以使用Joi.date.iso().min(Joi.ref('startTime'))
以上是关于Joi 验证 - 与 POST 中的日期进行比较的主要内容,如果未能解决你的问题,请参考以下文章
通过与javascript中的今天日期进行比较来允许今天的日期和未来的日期