mysql NestJS TypeORM createQueryBuilder SELECT查询

yshpjwxd  于 2023-04-19  发布在  Mysql
关注(0)|答案(1)|浏览(217)

我正在尝试运行查询

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'列。
如何使这个工作?有人可以链接我的参考资料?

46qrfjad

46qrfjad1#

使用queryBuilder时,请注意 * 实体 * 和 * 原始SQL数据 * 之间的区别,并使用适当的API方法。
当查询返回原始SQL数据而不是ORM实体时,getOne(和getMany)将不起作用。请改用.getRawOne(或getRawMany)。

相关问题