Контроллер Loopback 4 Omit - PullRequest
       43

Контроллер Loopback 4 Omit

0 голосов
/ 30 марта 2020


Я делаю свои первые шаги в Loopback 4, и я пытался следовать руководству, чтобы они генерировали новый REST Api.
Дело в том, что после создания моей модели база данных и хранилище, я начал разрабатывать свой класс контроллера и обнаружил фрагмент кода, который нигде в документации не упоминается.

У меня есть сигнал ниже:

async createTodo(
    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(Todo, {title: 'NewTodo', exclude: ['id']}),
        },
      },
    })
 todo: **Omit<Todo, 'id'>,** <----------
  ): Promise<Todo> {
    ...
    return this.todoRepository.create(todo);
  }

Мой Вопрос в том, для чего это опущение? Я пытался удалить его из кода, и результат такой же, как у меня без него.

Кроме того, в этом пост-запросе я хотел бы скрыть свойство id из возражаю, когда получаю ответ. Как я могу сделать это только для ответа на этот запрос?

Заранее спасибо!

1 Ответ

1 голос
/ 15 апреля 2020

Это больше Typescript вещь, чем Loopback.

Loopback использует Typescript, поэтому вы обычно определяете типы и интерфейсы. Для тела запроса контроллера необходимо определить интерфейс.

Omit<T,K>

Создает тип, выбирая все свойства из T и затем удаляя K.

Здесь я предполагаю, что вы установили свойство id для автоматической генерации или генерации самостоятельно. И свойство id не является пользовательским вводом. Ваш интерфейс не отправляет значение id. Затем Вам необходимо создать интерфейс со всеми свойствами TodoModel, кроме id. Теперь вы можете создать новую запись с полученным объектом.

Подробнее об утилитах Typescript можно прочитать здесь

Кроме того, Loopaback4 использует DataObject<Model> для преобразования модели. в интерфейс.

...