[英]Joi Nested schema
我正在嘗試在 joi 中創建嵌套模式,但它拋出錯誤
[錯誤:Object 模式不能是 joi 模式]
var nestedSchema = joi.object({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData:joi.object(nestedSchema)
});
我應該如何在 joi 中定義嵌套模式?
盡管 Francesco 的回答有效,但沒有必要使用object.keys()
。 問題創建者所做的錯誤是將模式作為參數傳遞給joi.object()
。
因此,創建嵌套模式就像將模式分配給屬於另一個模式的鍵一樣簡單。
const schemaA = Joi.string()
const schemaB = Joi.object({ keyB1: schemaA, keyB2: Joi.number() })
const schemaC = Joi.object({
keyC1: Joi.string(),
keyC2: schemaB
})
Joi.validate({ keyC1: 'joi', keyC2: { keyB1: 'rocks!', keyB2: 3 } }, schemaC)
你可以使用object.keys API
var nestedSchema = joi.object().keys({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});
只是基於 Francesco 接受的答案的提示:
如果您需要“nestedData”->“base”中的“nestedData:nestedSchema.required()”將不起作用,您需要像任何其他參數一樣直接在“nestedSchema”上設置它
var nestedSchema = joi.object().keys({
b: joi.number()
})
.required();
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});
使用 Joi 17.6.0
版,您可以使用以下valid
功能
const schema = Joi.object({
type: Joi.string().valid('android', 'ios').insensitive()
})
如果 type 屬性不是android
或ios
,這將引發錯誤
const base = joi.object({ a: joi.string(), nestedData: joi.object({b: joi.number()}) });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.