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(),
})
});
我的对象包含 taskno、dttarget 和 dtdue,我只想验证它。
如果我 joi.validate()
反对它 returns 错误 "dtcomplete is required"。
有没有办法选择性地检查 "dtcomplete"
在 Joi
中尝试 dtcomplete
和 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'),
我一直在尝试实现以下 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,我只想验证它。
如果我 joi.validate()
反对它 returns 错误 "dtcomplete is required"。
有没有办法选择性地检查 "dtcomplete"
在 Joi
dtcomplete
和 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'),