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