[英]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.