【问题标题】:TypeOrm - NestJS using queryBuilderTypeOrm - NestJS 使用 queryBuilder
【发布时间】:2021-04-28 10:02:47
【问题描述】:

我在 mysql 中有这个 db 架构:

     users_tbl
     --------------------------------------------
     id        |  first_name         | last_name
     --------------------------------------------
     1         |  Jon                | Doe
     2         |  Mark               | Smith


     address_tbl
     ------------------------------------------------------------
     id        |  address            | city             | user_id
     ------------------------------------------------------------
     1         |  some address       | some city        | 1

然后,我想使用 TypeOrm 的 queryBuilder 来获取 Jon Doe 的地址。

我的原始 sql 查询: SELECT users.first_name, users.last_name, address.address, address.city FROM users INNER JOIN address ON address.user_id=users.id

我的 TypeOrm 查询构建器:

const users = await this.userRepo
      .createQueryBuilder('users')
      .select('users.first_name', 'fName')
      .addSelect('users.last_name', 'lName')
      .addSelect('adr.address', 'address')
      .addSelect('adr.city', 'city')
      .innerJoin('address', 'adr', 'adr.user_id=users.id')
      .getMany();
return users;

似乎没有任何错误,因为我能够运行GET 请求。但是,它返回一个空对象。在我的控制台中,NestJS(或 TypeORM)记录了生成的 mysql 查询。这里是:

SELECT adr.city AS city, adr.country AS country, adr.id AS adr_id, users.first_name AS fName, users.last_name AS lName FROM users users INNER JOIN address adr ON adr.user_id = users.id

我复制并粘贴它以在 phpmyadmin 中执行手动查询。查询似乎有效,并给了我预期的输出。我的代码中是否缺少某些内容,或者这是某种 TypeORM 限制?

【问题讨论】:

  • 你能分享你的控制器方法吗?

标签: mysql node.js nestjs query-builder typeorm


【解决方案1】:

如下尝试使用getRawMany 而不是getMany -

return await this.userRepo
      .createQueryBuilder('users')
      .select('users.first_name', 'fName')
      .addSelect('users.last_name', 'lName')
      .addSelect('adr.address', 'address')
      .addSelect('adr.city', 'city')
      .innerJoin('address', 'adr', 'adr.user_id=users.id')
      .printSql() 
      .getRawMany();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2020-12-20
    • 2020-12-09
    • 1970-01-01
    • 2019-06-19
    • 2019-09-18
    相关资源
    最近更新 更多