Javascript Joi验证-如何根据输入选择字段
我一直在尝试实现以下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
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'),