『埃尔法哥哥』nestjs使用Typeorm实现数据库CRUD操作( 三 )


}
@Delete(':id')
asyncdeleteCat(@Param('id')id:number):Promise{
awaitthis.CatService.deleteCat(id);
return{code:200,message:'删除成功'};
}
@Put(':id')
asyncupdateCat(@Param('id')id:number,@Body()Cat:Cat):Promise{
awaitthis.CatService.updateCat(id,Cat);
return{code:200,message:'更新成功'};
}
@Get(':id')
asyncfindOneCat(@Param('id')id:number):Promise{
constdata=https://pcff.toutiao.jxnews.com.cn/p/20200505/awaitthis.CatService.findOneCat(id);
return{code:200,message:'查询成功',data};
}
}
4.2cat.service.ts文件
import{HttpException,Injectable}from'@nestjs/common';
import{InjectRepository}from'@nestjs/typeorm';
import{Repository}from'typeorm';
import{Cat}from'./cat.entity';
@Injectable()
exportclassCatService{
constructor(
@InjectRepository(Cat)privatereadonlycatRepo:Repository,//使用泛型注入对应类型的存储库实例
){}
/**
*创建
*
*@paramcatCat实体对象
*/
asynccreateCat(cat:Cat):Promise{
/**
*创建新的实体实例 , 并将此对象的所有实体属性复制到新实体中 。 请注意 , 它仅复制实体模型中存在的属性 。
*/
//this.catRepo.create(cat);
//插入数据时 , 删除id , 以避免请求体内传入id
deletecat.id;
returnthis.catRepo.save(cat);
/**
*将给定实体插入数据库 。 与save方法不同 , 执行原始操作时不包括级联 , 关系和其他操作 。
*执行快速有效的INSERT操作 。 不检查数据库中是否存在实体 , 因此如果插入重复实体 , 本次操作将失败 。
*/
//awaitthis.catRepo.insert(cat);
}
/**
*删除
*
*@paramidID
*/
asyncdeleteCat(id:number):Promise{
awaitthis.findOneById(id);
this.catRepo.delete(id);
}
/**
*更新
*
*@paramidID
*@paramcatCat实体对象
*/
asyncupdateCat(id:number,cat:Cat):Promise{
awaitthis.findOneById(id);
//更新数据时 , 删除id , 以避免请求体内传入id
deletecat.id;
this.catRepo.update(id,cat);
}
/**
*根据ID查询
*
*@paramidID
*/
asyncfindOneCat(id:number):Promise{
returnthis.findOneById(id);
}
/**
*根据ID查询单个信息 , 如果不存在则抛出404异常
*@paramidID
*/
privateasyncfindOneById(id:number):Promise{
constcatInfo=awaitthis.catRepo.findOne(id);
if(!catInfo){
thrownewHttpException(`指定id=${id}的猫猫不存在`,404);
}
returncatInfo;
}
}
4.3cat.entity.ts数据库实体文件
import{Column,Entity,PrimaryGeneratedColumn}from'typeorm';
@Entity('cat')
exportclassCat{
/**
*自增主键
*/
@PrimaryGeneratedColumn({
comment:'自增ID'
})
id:number;
/**
*昵称
*/
@Column({
comment:'昵称'
})
nickname:string;
/**
*品种
*/
@Column({
comment:'品种'
})
species:string;
}
4.4cat.module.ts模块文件
import{Module}from'@nestjs/common';
import{TypeOrmModule}from'@nestjs/typeorm';
import{CatController}from'./cat.controller';