【问题标题】:How To Setup A Nestjs Query With TypeORM That Returns Multiple Items?如何使用返回多个项目的 TypeORM 设置 Nestjs 查询?
【发布时间】:2018-11-11 23:38:04
【问题描述】:

我从 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);
  }

【问题讨论】:

    标签: javascript typescript nestjs typeorm


    【解决方案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

    【讨论】:

    • 谢谢,但是那个 URL 没有调用 Get 参数。我在 Postman 中测试了您的 URL,比更改我的 Angular 代码更快,并且 Get 中的 console.log 从未被调用。它看起来比我尝试过的任何东西都要好 :-) 顺便说一下,这个 URL 将检索 Skill_id 2 所以我的主要设置有效:localhost:3000/api/skills/2
    • skill_id 的选择查询的结尾如下所示:WHERE ("Skills"."skill_id" = $1) -- PARAMETERS: ["2"]。我需要类似的东西来查找具有特定 category_id 的所有技能。
    • 我更改了您的 Get 参数并调用:'/category_id/2' 然后我在选择查询结束时得到这个:WHERE "Skills"."category_id" = $1 -- PARAMETERS: [null ] 这似乎越来越接近。至少它现在正在调用 Get 函数。
    • 等一下。我将设置项目并进行测试
    • 这行得通! Get('/category_id/:id') 感谢您让我走上正轨!编辑您的帖子,我会将其标记为答案。 :-)
    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2020-05-27
    • 2020-09-22
    • 2019-03-28
    • 2020-10-06
    • 2018-03-20
    相关资源
    最近更新 更多