我试图在joi中创建嵌套的模式,但是抛出了错误。
错误:对象架构不能是joi架构
var nestedSchema = joi.object({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData:joi.object(nestedSchema)
});我应该如何在joi中定义嵌套模式?
发布于 2016-04-20 18:59:12
您可以使用object.keys应用程序接口
var nestedSchema = joi.object().keys({
b: joi.number()
});
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});发布于 2017-03-03 18:04:10
虽然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)发布于 2019-01-23 22:43:10
这只是一个基于Francesco接受的答案的小贴士:
如果您需要"nestedData“作为必需参数,则”->“中的"nestedData: nestedSchema.required()”将不起作用,您需要像其他任何参数一样直接在"nestedSchema“上设置它
var nestedSchema = joi.object().keys({
b: joi.number()
})
.required();
var base = joi.object({
a: joi.string(),
nestedData: nestedSchema
});https://stackoverflow.com/questions/36739427
复制相似问题