Join嵌套架构
Joi Nested schema
我试图在joi中创建嵌套模式,但它抛出错误
[错误:对象架构不能是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
});
使用Join版本17.6.0
,您可以使用如下所示的valid
函数
const schema = Joi.object({
type: Joi.string().valid('android', 'ios').insensitive()
})
如果类型属性不是android
或ios
const base = joi.object({
a: joi.string(),
nestedData: joi.object({b: joi.number()})
});
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- 猫鼬在特定记录中查找嵌套记录
- 访问嵌套JSON对象的键,其中键是动态的
- D3嵌套组作为x轴
- Ionic和angularjs嵌套步骤应用程序
- 从多维嵌套json数组创建下拉列表
- 默认情况下折叠和展开嵌套列表
- 嵌套对象结构
- 显示嵌套窗体
- 带嵌套json的下划线js查找
- Join嵌套架构