Как настроить запрос Nestjs с TypeORM, который возвращает несколько элементов? - PullRequest
0 голосов
/ 01 июня 2018

Я отправляю этот URL из Angular:

http://localhost:3000/api/skills?category_id=2

Вопрос в том, как исправить мой код, чтобы он восстанавливал все навыки с category_id 2?

Я не ищу skill_id, я могу получить отдельные навыки без проблем.Запись выглядит так:

skill_id
skill_name
category_id

В скилле skill.controller у меня это есть.Я экспериментировал с параметром @Get, но до сих пор не могу вызвать эту функцию.Console.log никогда не вызывается.Кроме того, я понятия не имею, как сообщить службе, что я хочу, чтобы все записи навыков были с идентификатором category_id, равным 2, или любым другим нужным номером.скажите БД, Postgres, чтобы запросить category_id 2. Как-то это должно произойти, но столбец category_id, похоже, не является обычным параметром.

  async getSkillsByCategory(categoryId) {
    console.log('categoryId in service', categoryId);
    return await this.skillsRepository.find(categoryId);
  }

1 Ответ

0 голосов
/ 01 июня 2018

Предполагая, что корневой путь ваших навыков равен http://localhost:3000/api/skills/, измените контроллер на:

  import { ParseIntPipe } from '@nestjs/common';
  // you can use ParseIntPipe to validate if id is actually number, very useful

  @Get('category/:id')  //  or  @Get('/category/:id')
  public async getSkillsByCategory(@Param('id', new ParseIntPipe()) id) {
    return this.skillsService.getSkillsByCategory(id);
  }

И ваш сервис:

async getSkillsByCategory(id) {
  return await this.skillsRepository.find({ category_id: id });
}

А теперь позвоните http://localhost:3000/api/skills/category/2.

...