У меня есть схема для проверки:
const schema2 = Joi.object({
benefits: Joi.array().items(Joi.object({
specification: Joi.object({
type: Joi.string().valid("ORDER_FIXED_DISCOUNT", "UNIT_PERCENTAGE_DISCOUNT").required(),
}).required()
})).min(1).max(1).required(),
offerCriteria: Joi.array().items(Joi.object({
type: Joi.string().valid("CONTAINS_OFFERS").required(),
offers: Joi.array().items(Joi.object({
quantity: Joi.number().when(Joi.ref("....benefits.0.specification.type"), {
is: Joi.string().valid("ORDER_FIXED_DISCOUNT"),
then: Joi.required(),
otherwise: Joi.forbidden()
}),
promotionEntryPoint: Joi.boolean().when(Joi.ref("....benefits.0.specification.type"), {
is: Joi.string().valid("ORDER_FIXED_DISCOUNT"),
then: Joi.required(),
otherwise: Joi.forbidden()
})
})).min(1).required()
})).min(1).max(1).required()
});
Моя цель - установить обязательные для offerCriteria.offers.quantity
и offerCriteria.offers.quantitypromotionEntryPoint
, если benefits.specification.type
равно
ORDER_FIXED_DISCOUNT
, в противном случае установлено запрещенное.
Я пробовал это, когда условия, но ни один из них не работал должным образом:
- ".... benefits.specification.type",
- "... .benefits.0.specification.type ",
- Joi.ref (" .... benefits.0.specification.type "),
- Joi.ref (" .... benefits.specification.type ")