gpt4 book ai didi

Joi 当兄弟时然后在根添加额外的规则

转载 作者:行者123 更新时间:2023-12-03 20:27:32 25 4
gpt4 key购买 nike

我有一个复杂的验证,它根据 JSON 中的 a 值而变化。

{ type: 'a', thing: 1, foo: 'abc' }
{ type: 'b', thing: 2, bar: 123 }

我想验证如果类型是 a,则使用一组 sibling ,如果 b 则使用另一组 sibling

我想使用 when switch ,但无法弄清楚如何在根上执行此操作。
Joi.object({
type: Joi.string().valid('a','b').required(),
thing: Joi.number().required()
}).when('type', {
switch: [
{ is: 'a', then: Joi.object({ foo: Joi.string() }) },
{ is: 'b', then: Joi.object({ bar: Joi.number() }) },
],
otherwise: Joi.forbidden(),
});

但是,这会导致以下错误:

Error: Invalid reference exceeds the schema root: ref:type



这有点像一个错误,但我不知道如何重构它以使其在根应用选择器。

我使用最新的 JOI (16.0.1)

最佳答案

这可以通过为传递给 .when() 的键名添加前缀来解决。与 . , 将键表示为相对于正在验证的对象:

Joi.object({
type: Joi.string().valid('a','b').required(),
thing: Joi.number().required()
})
.when('.type', { /* <-- prefix with . */
switch : [
{ is: 'a', then: Joi.object({ foo: Joi.string() }) },
{ is: 'b', then: Joi.object({ bar: Joi.number() }) },]
})

这是 a working example - 希望有帮助:-)

关于Joi 当兄弟时然后在根添加额外的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948744/

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