如何使用Joi Validator为字段设置当前日期默认值?
解决方案:Joi设置当前日期为默认值
你之前的写法问题在于:
- 第一种写法
Joi.date().default(new Date(Date.now()))会在定义Schema时就生成一个固定的日期,而不是每次验证请求时的当前时间。 - 第二种写法
Joi.date().default(Joi.date().timestamp())是错误的,因为default接受的是静态值或者返回值的函数,而不是Joi对象。
- 第一种写法
正确的实现方式是给
default传递一个返回当前日期的函数,这样每次执行验证时都会调用该函数生成最新的时间:
createdAt: Joi.date().default(() => new Date())
或者用时间戳形式简化:
createdAt: Joi.date().default(() => Date.now(), '当前时间戳')
这样每次验证时,只要createdAt字段不存在,就会自动填充为验证时刻的当前日期/时间戳。
内容的提问来源于stack exchange,提问作者Khalid Almubarak
相关产品推荐
相关产品推荐

