ルートの 1 つで次の検証があります。
payload: {
keywordGroups: Joi.array().items(Joi.object().keys({
language: Joi.string().required(),
containsAny: Joi.array().items(Joi.string()).default([]).when('containsAll', { is: [], then: Joi.required() }),
containsAll: Joi.array().items(Joi.string()).default([]).when('containsAny', { is: [], then: Joi.required() }),
notContainsAll: Joi.array().items(Joi.string()).default([]),
notContainsAny: Joi.array().items(Joi.string()).default([])
})).required(),
}
少なくとも1つの文字列を含めるcontainsAny
か、含める必要があるようにしようとしています。が空のcontainsAll
場合、少なくとも 1 つのアイテムが必要です。が空の場合は、少なくとも 1 つの項目を含める必要があります。containsAny
containsAll
containsAll
containsAny
しかしJoi.when
、オブジェクトの配列に関しては、実際には機能しないようです。