0

我从 Angular 发送这个 URL:

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

问题是,如何修复我的代码,以便它检索 category_id 为 2 的所有技能?

我不是在寻找技能 ID,我可以毫无问题地获取个人技能。记录如下所示:

skill_id
skill_name
category_id

在skills.controller 我有这个。我一直在尝试使用 @Get 参数,但仍然无法调用此函数。Console.log 永远不会被调用。此外,我不知道如何告诉服务我想要所有 category_id 为 2 或所需数字的技能记录。

  @Get('?category_id')
  public async getSkillsByCategory(@Param('category_id') categoryId) {
    console.log('skills recordId in controller: ', categoryId.id);
    return this.skillsService.getSkillsByCategory(categoryId.id);
  }

在技​​能服务中,我有这个,但它没有告诉数据库 Postgres 查询 category_id 2。不知何故,这需要发生,但 category_id 列似乎不是常规参数。

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

1 回答 1

1

假设您的技能根路径是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

于 2018-06-01T20:05:23.100 回答