joivalidation:有条件地设置最小数组长度

我有一个数组字段,我想确保它满足条件时至less有一个元素:

genre:Joi.array().includes(data.genres).when('field'{is:'fieldValue',then:Joi.required()}) 

如果我用Joi.required()。min(1)改变了'then'字段,它就会抱怨。

我可以跟Joi做这个吗?

你没有提到错误信息是什么,但是testing你的代码我想你得到了:

TypeError:Object [object Object]没有方法'min'

发生此错误是因为min()是数组types的函数。 在then:部分你创build一个新的validation对象,Joi不知道你期望在那里有一个数组。 所以你需要指定它:

 then: Joi.array().min(1).required() 

完整的validation码是:

 genre: Joi.array().includes(data.genres).when('field', {is: 'fieldValue', then: Joi.array().min(1).required()})