[英]Joi nested schemas and default values
我试图让 Joi 在另一个引用的辅助模式上强制执行默认值。 我有两个像这样的模式:
const schemaA = Joi.object().keys({
title: Joi.string().default(''),
time: Joi.number().min(1).default(5000)
})
const schemaB = Joi.object().keys({
enabled: Joi.bool().default(false),
a: schemaA
})
我想要的是提供一个未定义a
的对象,并让 Joi 为其应用默认值,如下所示:
const input = {enabled: true}
const {value} = schemaB.validate(input)
//Expect value to equal this:
const expected = {
enabled: true,
a: {
title: '',
time: 5000
}
}
问题在于,由于密钥是可选的,因此根本没有强制执行。 所以我想要的是它是可选的,但如果不存在,则正确填充schemaA
默认值。 我一直在查看文档,但似乎找不到任何关于此的信息,尽管我可能遗漏了一些明显的内容。 任何提示?
这应该这样做:
const schemaA = Joi.object().keys({
title: Joi.string().default(''),
time: Joi.number().min(1).default(5000),
});
const schemaB = Joi.object().keys({
enabled: Joi.bool().default(false),
a: schemaA.default(schemaA.validate({}).value),
});
虽然如果他们实现一个功能让我们为默认值传入Joi
模式对象会更好,就像这样: schemaA.default(schemaA)
或schemaA.default('object')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.