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

Postgres环境下FindOne函数无法正常工作问题求助

问题解决方法

你的代码核心问题是参数类型和传递逻辑完全错误,导致findOne无法识别有效的查询条件,具体修正如下:

错误原因

  • 控制器中@Param('id')获取的是URL路径里的单个id值(字符串/数字类型),但你错误地将其声明为FindOneOptions<Company>类型,传入服务层的根本不是符合要求的查询配置对象。
  • 服务层的get方法参数类型错误,接收的不是实际id值,而是被错误类型声明的参数,最终导致findOne调用时没有正确的查询条件。

修正后的代码

company.controller.ts

@Get(':id')
// 根据你的Company实体主键类型修改id的类型(比如number或string)
findOneCompany(@Param('id') id: number){
  return this.companyService.get(id);
}

company.service.ts

// 对应控制器传入的id类型,构造正确的查询条件
async get(id: number): Promise<Company | null>{
  console.log(id)
  return await this.companyRespository.findOne({
    where: { id } // 这里的id要和你Company实体中的主键字段名完全一致
  });
}

补充说明

如果你的TypeORM版本较旧,findOne支持直接传入id值,服务层代码也可以简化为:

async get(id: number): Promise<Company | null>{
  console.log(id)
  return await this.companyRespository.findOne(id);
}

但推荐使用FindOneOptions的where配置写法,更清晰且兼容新版本TypeORM。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:25:37