Как установить вложенные объекты в параметрах "body" (sails-hook-swagger-generator)? - PullRequest
0 голосов
/ 03 января 2019

Я использую sails.js 0.12.13 и sails-hook-swagger-generator для создания документации по подделкам.Я хочу установить необходимые параметры в контроллере вways.js.Я уже пробовал разные варианты, но безрезультатно.Я могу установить параметры тела, как описано здесь, но есть описанная опция только с типами, которые не являются объектами (не вложенными).Попытка использовать «схему» также не привела к успеху.

Не могли бы вы помочь мне понять, как правильно использовать вашу библиотеку для достижения результатов, описанных выше.

Пример моей схемы ajvПроверка.Конструктивно мне нужен тот же результат, что и в сваггере.

signin: {
  type: "object",
  properties: {
    company: {
      type: "object",
      properties: {
        name: {type: "string", minLength: 1, maxLength: 50},
        email: {type: "string", format: "email", minLength: 0, maxLength: 50}
      },
      required: ["name", "email"]
    },
    contact: {
      type: "object",
      properties: {
        firstName: {type: "string", minLength: 1, maxLength: 50},
        email: {type: "string", format: "email", minLength: 0, maxLength: 50}
      },
      required: ["firstName", "email"]
    }
  },
  required: ["company", "contact"]
}

Буду признателен за любую помощь!

Мне посоветовали использовать этот паттерн , затем двигатьсятребуемый массив как поле в каждом из полей объекта свойств.Я пытался использовать его, но, к сожалению, все попытки настроить маршруты так, чтобы отображались внедренные объекты, безрезультатны.Код не преобразуется в правильный файл swagger.json.

Пример кода (одна из последних попыток):

Route.generate({
  method: "POST",
  endpoint: "auth/signin",
  controller: controller,
  action: "signin",
  swagger: {
    summary: "User login",
    description: "User login",
    parameters: [{
      in: 'body',
      type: 'object',
      name: 'contact',
      schema: {
        type: 'object',
        properties: {
          name: { type: "string", minLength: 1, maxLength: 50 }
        }
      },
      required: true
    }, {
      in: 'body', 
      type: 'object',
      name: 'company',
      schema: {
        type: 'object',
        properties: {
          name: { type: "string", minLength: 1, maxLength: 50 }
        }
      },
      required: true
    }]
  }
});

В результате в моем пользовательском интерфейсе 2 пустыхпараметры тела (контакт и компания) с типом "объект".

...