You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS中TypeORM仅查询USER_CODE字段返回null问题求助

解决NestJS + TypeORM仅查询指定字段的问题

问题原因

你之前的代码里from(users,'users')存在两个问题:

  1. users是未定义的变量,应该使用实体类Users
  2. 通过userRepository.createQueryBuilder()创建的查询构建器已经自动关联了Users实体对应的表,无需手动指定from,手动指定反而会破坏默认的实体映射逻辑,导致查询返回null

修正方案

方案一:正确使用QueryBuilder

直接在默认的查询构建器上指定要选择的字段即可:

async signup(body: UsersSignupDto) {
  const user = await this.userRepository
    .createQueryBuilder('users') // 指定表别名
    .select('users.user_code')
    .where('users.user_code = :id', { id: '74EQQK' })
    .getOne();
  console.log(user); // 输出 { user_code: '74EQQK' }
}

方案二:使用Repository的select方法(更简洁)

如果不需要复杂查询,直接用Repository内置的select方法更简单:

async signup(body: UsersSignupDto) {
  const user = await this.userRepository
    .select(['user_code'])
    .where({ user_code: '74EQQK' })
    .getOne();
  console.log(user); // 输出 { user_code: '74EQQK' }
}

关键说明

  • 当使用Repository.createQueryBuilder()时,若不指定别名,默认别名是实体类名的小驼峰(比如Users对应user),显式指定别名(如'users')可以让SQL更清晰
  • getOne()会返回包含指定字段的对象,若需要单独获取字段值,可以改用getRawOne()或者解构对象:
    const { user_code } = await this.userRepository
      .select(['user_code'])
      .where({ user_code: '74EQQK' })
      .getOne();
    console.log(user_code); // 直接输出 '74EQQK'
    

内容的提问来源于stack exchange,提问作者tonykrjhc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:28:10