Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Joi验证-如何根据输入选择字段_Javascript_Node.js_Joi - Fatal编程技术网

Javascript Joi验证-如何根据输入选择字段

Javascript Joi验证-如何根据输入选择字段,javascript,node.js,joi,Javascript,Node.js,Joi,我一直在尝试实现以下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.str

我一直在尝试实现以下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(),
      })
    });
我的对象包含taskno、dttarget和dtdue,我只想验证它
如果i
joi.validate()
对象,它将返回错误“dtcomplete is required”

有没有办法选择检查“dtcomplete”

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.exist().valid('C', 'I'),
    then: Joi.date().iso().required(),
  })
});
唯一的区别是:Joi.exist().valid('C','I'),