我在mysql中有这样一个数据库模式:
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
My TypeOrm queryBuilder:
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的一些限制?
发布于 2021-01-25 17:55:20
尝试使用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();https://stackoverflow.com/questions/65870541
复制相似问题