如何使用返回多个项的TypeORM设置Nestjs查询?

时间:2018-06-01 19:35:07

标签: typeorm nestjs

我从Angular发送此网址:

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

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

我没有找到skill_id,我可以毫无问题地获取个人技能。记录如下:

skill_id
skill_name
category_id

在skill.controller我有这个。我一直在试验@Get param,但仍然无法调用此函数。从不调用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);
  }

在skills.service中,我有这个,但它没有告诉db,Postgres,查询category_id 2.不知何故需要发生但是category_id列似乎不是常规参数。

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

1 个答案:

答案 0 :(得分: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