Nest.js學(xué)習(xí)之路(19)-TypeORM(6)Query Builder Select(上)

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容