- Nest.js学习之路(19)-TypeORM(6)Query
- Nest.js学习之路(20)-TypeORM(7)Query
- Nest.js学习之路(14)- TypeORM库(1)存取 i
- Nest.js学习之路(23)-TypeORM(10) Embe
- Nest.js学习之路(22)-TypeORM(9) Relat
- Nest.js学习之路(21)-TypeORM(8) Relat
- Nest.js学习之路(16)-typeorm(3)basic
- 在 Nest.js 中使用 MongoDB 与 TypeORM
- Nest.js学习之路(15)-typeorm(2)新增数据
- Nest.js学习之路(1)-开发环境准备
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测试,如下图
2018111405.png
实际数据
2018111406.png
下一章继续。
tuiguang.png推荐一下我的公众号: 【 geekjc 】,微信号: 【 c8706288 】一起学习交流编程知识,分享经验,各种有趣的事。
网友评论