TypeORM Repository已经写好常用对资料库新增、修改、搜寻(find说明文件)、删除资料
TypeORM Repository API列表
如果要更细部的建立Query,TypeORM提供Query Builder相关API,以API的方式去组SQL Query,比较弹性。
使用QueryBuilder只要在注入的repository变数呼叫createQueryBuilder,
例如要以平台名称搜寻使用者,并按照使用者名称排序
新增getUsersByPlatformName于users.service.ts
async getUsersByPlatformName(platformName: string){
return await this.userRepo
.createQueryBuilder('u') // 指定User別名为u
// 指定join user的roles关联属性,并指定別名为r,并设定搜寻条件
.leftJoinAndSelect('u.roles', 'r')
// 指定join user的dep關聯屬性,并指定別名為d,並設定搜尋條件
.leftJoinAndSelect('u.plat', 'p')
// 設定條件
.where('p.isActive = :isActive', {isActive: true})
.andWhere('p.platformName like :name', { name: `%${platformName.toLowerCase()}%`})
// 以age降幂排序
.orderBy('age', 'DESC')
// 回传多笔资料
.getMany();
// 回传上面API所组出來的Raw SQL, debug用
// .getSql()
}
到user.controller.ts新增路由
@Get('query/user')
queryByPlatformName(@Query('platformName') platformName){
return this.userService.getUsersByPlatformName(platformName);
}
使用postman测试,如下图
实际数据
下一章继续。
推荐一下我的公众号: 【 geekjc 】,微信号: 【 c8706288 】一起学习交流编程知识,分享经验,各种有趣的事。