TypeORM Repository已經(jīng)寫好常用對資料庫新增、修改、搜尋(find說明文件)、刪除資料
TypeORM Repository API列表
如果要更細(xì)部的建立Query,TypeORM提供Query Builder相關(guān)API,以API的方式去組SQL Query,比較彈性。
使用QueryBuilder只要在注入的repository變數(shù)呼叫createQueryBuilder,
例如要以平臺名稱搜尋使用者,并按照使用者名稱排序
新增getUsersByPlatformName于users.service.ts
async getUsersByPlatformName(platformName: string){
return await this.userRepo
.createQueryBuilder('u') // 指定User別名為u
// 指定join user的roles關(guān)聯(lián)屬性,并指定別名為r,并設(shè)定搜尋條件
.leftJoinAndSelect('u.roles', 'r')
// 指定join user的dep關(guān)聯(lián)屬性,并指定別名為d,並設(shè)定搜尋條件
.leftJoinAndSelect('u.plat', 'p')
// 設(shè)定條件
.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
實(shí)際數(shù)據(jù)

2018111406.png
下一章繼續(xù)。
推薦一下我的公眾號: 【 geekjc 】,微信號: 【 c8706288 】一起學(xué)習(xí)交流編程知識,分享經(jīng)驗(yàn),各種有趣的事。

tuiguang.png