我有一个这样构造的示例模型:
const MyModelResponse = Joi.object().keys({
id: Joi.number().integer().required()
.description('ID of the example model'),
description: Joi.string()
.description('Description of the example model'),
})
.description('example instance of MyModel with the unique ID present')
.label('MyModelResponse');
在我的路线中,我想确保对输入参数针对MyModeResponse的id属性进行了验证,如下所示:
validate: {
params: {
id: MyModelResponse.id,
},
options: { presence: 'required' },
failAction: failAction('request'),
}
这会在服务器启动时导致架构验证错误:
AssertionError [ERR_ASSERTION]: Invalid schema content: (id)
是否有引用模式键的方法?目前,我必须诉诸以下任何一种情况:
根本不引用我的MyModelResponse模式:
validate: {
params: {
id: Joi.number().integer().description('id of MyModel instance to get'),
},
options: { presence: 'required' },
failAction: failAction('request'),
}
通过这样定义我的模型,不使用Joi.object.keys()构造函数:
const MyModelResponse = {
id: Joi.number().integer().required()
.description('ID of the example model'),
description: Joi.string()
.description('Description of the example model'),
}
底部方法允许我在路由中引用id属性,但不允许我向架构添加描述和标签。我曾尝试在路线验证中使用MyModel.describe()。children.id,但尝试将id对象反序列化为架构对象无济于事。
任何建议将不胜感激。
答案 0 :(得分:0)
删除keys()并按以下方式使用
const MyModelResponse = Joi.object({
id: Joi.number().integer().required()
.description('ID of the example model'),
description: Joi.string()
.description('Description of the example model'),
})
.description('example instance of MyModel with the unique ID present')
.label('MyModelResponse');