NodeJS NestJs Joi,两个日期之间最多应间隔30天

nxagd54h  于 2023-05-22  发布在  Node.js
关注(0)|答案(1)|浏览(154)

我需要验证2个参数,如你所见如下。验证应该是这样的:

startDate - endDate < 30 days
startDate: Joi.date().default(new Date()),
  endDate: Joi.date().default(new Date()),

当我这样做的时候,我得到了一个错误。

Joi.object({
  startDate: Joi.date().default(new Date()),
  endDate: Joi.date().less(Joi.ref('startDate') + 50000).default(new Date()),
})
// error - AssertError: date must have a valid date format or reference

我正在尝试为2个日期参数添加验证。

jm81lzqq

jm81lzqq1#

您需要使用Joi.ref的adjust选项沿着js date的getTime()

adjust允许在验证前操作引用值(startDate)。
getTime以毫秒为单位返回日期,因此我们可以将毫秒添加到它。

const t = Joi.object({
  startDate: Joi.date().default(new Date()),
  endDate: Joi.date()
              .less(
                   Joi.ref("startDate", {
                            adjust: (v) => v.getTime() + (29 * 24 * 60 * 60 * 1000),
                   })
               )
               .default(new Date()),
  });

相关问题