gpt4 book ai didi

javascript - Joi 数组 基于根键值的对象验证

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:26 24 4
gpt4 key购买 nike

我有一个复杂的场景,我想使用 Joi 进行验证这里是 Joi 对象架构示例

const itemSchema = Joi.object({
product_id: Joi.string().required(),
quantity: Joi.number().required().min(0)
});

let objSchema = {
items: Joi.array().items(itemSchema).required().min(1),
item_return_flag: Joi.string().optional().valid(true, false)
};

根据 item_return_flag 键值 truefalse,我想更改 items.quantity 最小值要求。当 true 时,数量将为 0 ,否则为 1。

无论如何,有没有基于Joi中的根对象来控制数组中对象验证的定义

最佳答案

将基于父键 item_return_flag 切换架构的示例代码。数组的模式需要使用 Joi.altertnatives()

进行切换
let itemArr = Joi.object({
product_id: Joi.string().required(),
quantity: Joi.number().required().min(0)
});

let itemArr2 = Joi.object({
product_id: Joi.string().required(),
quantity: Joi.number().required().min(1)
});

let itemSchema = Joi.alternatives()
.when('item_return_flag', { is: true, then: Joi.array().items(itemArr).required().min(1), otherwise: Joi.array().items(itemArr2).required().min(1)}) ;

let objSchema = {
items: itemSchema,
item_return_flag: Joi.string().optional().valid(true, false)
};

关于javascript - Joi 数组 基于根键值的对象验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51832287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com