Joi 嵌套模式
Joi Nested schema
我正在尝试在 joi 中创建嵌套模式,但出现错误
[错误:对象模式不能是 joi 模式]
var nestedSchema = joi.object({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData:joi.object(nestedSchema)
});
我应该如何在 joi 中定义嵌套架构?
你可以使用 object.keys API
var nestedSchema = joi.object().keys({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});
尽管 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)
只是基于 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()
})
如果类型 属性 不是 android
或 ios
,这将引发错误
我正在尝试在 joi 中创建嵌套模式,但出现错误
[错误:对象模式不能是 joi 模式]
var nestedSchema = joi.object({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData:joi.object(nestedSchema)
});
我应该如何在 joi 中定义嵌套架构?
你可以使用 object.keys API
var nestedSchema = joi.object().keys({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});
尽管 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)
只是基于 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()
})
如果类型 属性 不是 android
或 ios