[英]Joi - Access object item property from first element of array
我有我的验证架构:
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
否则设置为禁止。
我在条件下尝试过这个,但没有一个能正常工作:
我找到了解决这个问题的方法:
quantity: Joi.number().when("$specification_type", {
is: Joi.string().valid("ORDER_FIXED_DISCOUNT"),
then: Joi.required(),
otherwise: Joi.forbidden()
}),
验证时在上下文中设置$specification_type
schema.validate(data, {context: {specification_type: data.benefits[0].specification.type}}})
我仍在寻找一种使用模式而不是上下文的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.