我想使用Joi验证一个包含多个对象的数组。尽管我找不到一种方法来标记数组列表中的一个对象为“required = false”。有什么办法可以让伊做到这一点吗?
wqlqzqxt1#
试试这边
Joi.array().items(Joi.object({ // Object schema }))
Ref link 1Ref link 2
sqyvllje2#
若要验证只需要一个对象而不需要另一个对象的对象数组,可以将可选方法和必选方法与数组方法的items方法结合使用。例如,假设您有一个对象数组,其中必须至少包含一个具有requiredProp属性的对象,并且还可能包含具有可选属性optionalProp的其他对象。您可以使用以下架构对此进行验证:
const schema = Joi.array().items( Joi.object({ requiredProp: Joi.string().required() }), Joi.object({ optionalProp: Joi.string().optional() }) )
此架构指定数组必须至少包含一个具有requiredProp属性的对象,还可以包含具有可选optionalProp属性的其他对象。然后,您可以使用validate方法根据此模式验证数组:
const array = [ { requiredProp: 'abc' }, { optionalProp: 'def' } ] const result = schema.validate(array) if (result.error) { console.log('Validation failed:', result.error) } else { console.log('Validation succeeded') }
这将成功验证,因为数组至少包含一个具有必需的requiredProp属性的对象,并且还包含一个具有可选的optionalProp属性的对象。
2条答案
按热度按时间wqlqzqxt1#
试试这边
Ref link 1
Ref link 2
sqyvllje2#
若要验证只需要一个对象而不需要另一个对象的对象数组,可以将可选方法和必选方法与数组方法的items方法结合使用。
例如,假设您有一个对象数组,其中必须至少包含一个具有requiredProp属性的对象,并且还可能包含具有可选属性optionalProp的其他对象。您可以使用以下架构对此进行验证:
此架构指定数组必须至少包含一个具有requiredProp属性的对象,还可以包含具有可选optionalProp属性的其他对象。
然后,您可以使用validate方法根据此模式验证数组:
这将成功验证,因为数组至少包含一个具有必需的requiredProp属性的对象,并且还包含一个具有可选的optionalProp属性的对象。