我正在尝试运行查询
SELECT USER_CODE
FROM USERS
在nestJS中使用TypeORM。
我的数据库是MySQL,这个数据库有一个users
表,表中的列是:
'USER_CODE', 'USER_EMAIL', 'USER_PASSWORD', 'USER_PHONE'
TypeORM的官方文档我看了好几遍,但都不是很懂。
//service.ts
import { InjectRepository } from '@nestjs/typeorm';
import { Injectable } from '@nestjs/common';
import { Users } from './entity/users.entity';
import { Repository } from 'typeorm';
import { UsersSignupDto } from './dto/users.signup.dto';
import { generateCode } from 'src/common/utils/code.generator';
@Injectable()
export class UsersService {
constructor(
@InjectRepository(Users) private userRepository: Repository<Users>,
) {}
async signup(body: UsersSignupDto) {
const user = await this.userRepository
.createQueryBuilder()
.select('users.user_code')
.from(users,'users')
.where('users.user_code = :id', { id: '74EQQK' })
.getOne();
console.log(user);
}
代码返回'null',但我检查了表的行不是空的。
但当我尝试
const user = await this.userRepository
.createQueryBuilder()
.where('users.user_code = :id', { id: '74EQQK' })
.getOne();
console.log(user);
它工作..但是这个查询从表中获取所有信息。
我只想得到'user_code'列。
如何使这个工作?有人可以链接我的参考资料?
1条答案
按热度按时间46qrfjad1#
使用queryBuilder时,请注意 * 实体 * 和 * 原始SQL数据 * 之间的区别,并使用适当的API方法。
当查询返回原始SQL数据而不是ORM实体时,getOne(和getMany)将不起作用。请改用.getRawOne(或getRawMany)。