繁体   English   中英

Joi 验证 - 如何根据输入使字段可选

[英]Joi validation - how to make a field optional based on input

我一直在尝试实现以下 joi 验证。

joiSchema = Joi.object().keys({
      taskno: Joi.string().alphanum().required().uppercase().trim(),
      taskstatus: Joi.valid('G', 'C', 'I', 'S'),
      taskpriority: Joi.number().integer().max(5).min(1),
      stuckreason: Joi.string().allow('').max(200).trim(),
      dttarget: Joi.date().iso(),
      dtdue: Joi.date().iso(),
      dtcomplete: Joi.when('taskstatus', {
        is: Joi.valid('C', 'I'),
        then: Joi.date().iso().required(),
      })
    });

我的 object 包含 taskno、dttarget 和 dtdue,我只想验证这一点。
如果我joi.validate() object 它返回错误"dtcomplete is required"
有没有办法选择检查“dtcomplete”

Joi中尝试dtcomplete和 exists exist()的条件

所以代码将如下所示

joiSchema = Joi.object().keys({
  taskno: Joi.string().alphanum().required().uppercase().trim(),
  taskstatus: Joi.valid('G', 'C', 'I', 'S'),
  taskpriority: Joi.number().integer().max(5).min(1),
  stuckreason: Joi.string().allow('').max(200).trim(),
  dttarget: Joi.date().iso(),
  dtdue: Joi.date().iso(),
  dtcomplete: Joi.when('taskstatus', {
    is: Joi.exist().valid('C', 'I'),
    then: Joi.date().iso().required(),
  })
});

唯一的区别在于is: Joi.exist().valid('C', 'I'),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM