Nest.js学习之路(19)-TypeORM(6)Query

作者: cbw100 | 来源:发表于2019-06-27 14:00 被阅读0次

    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

    下一章继续。

    推荐一下我的公众号: 【 geekjc 】,微信号: 【 c8706288 】一起学习交流编程知识,分享经验,各种有趣的事。

    tuiguang.png

    相关文章

      网友评论

        本文标题:Nest.js学习之路(19)-TypeORM(6)Query

        本文链接:https://www.haomeiwen.com/subject/jowdfqtx.html