[英]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.