У меня есть примерная модель, построенная так:
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');
В моем маршруте я хочу убедиться, что мой входной параметр проверяется на соответствие свойству id MyModeResponse следующим образом:
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 в объект схемы, но безрезультатно.
Мы ценим любые предложения.