TypeORM 在使用 .find()/.findOne() 时返回 undefined

Posted

技术标签:

【中文标题】TypeORM 在使用 .find()/.findOne() 时返回 undefined【英文标题】:TypeORM returning undefined when using .find()/.findOne() 【发布时间】:2022-01-23 21:50:42 【问题描述】:

我正在尝试使用 TypeORM 查询我的 postgres 数据库,但我收到了 undefined 作为对 .find().findOne() 的响应。如果我使用原始 SQL 查询,我会得到一个结果。

const taskRepository = connection.getRepository(Task);

const task = await taskRepository.query("SELECT * FROM tasks WHERE id='c3af6724-ba96-4144-88a6-b351282ec3cb'");

const firstTask = await taskRepository.findOne('c3af6724-ba96-4144-88a6-b351282ec3cb'); // taskRepository.find() also returns undefined.

这是注销时的输出:


  task: [
    
      id: 'c3af6724-ba96-4144-88a6-b351282ec3cb',
      break_duration: 20,
      category: 'Code',
      complete: false,
      date: 2021-12-22T00:00:00.000Z,
      name: 'My first code task!',
      working_sessions: 4
    
  ],
  firstTask: undefined

这是我的Task Entity

import  Entity, PrimaryGeneratedColumn, Column  from 'typeorm';

@Entity()
export class Task 
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  break_duration: number;

  @Column()
  category: string;

  @Column()
  complete: boolean;

  @Column()
  date: Date;

  @Column()
  name: string;

  @Column()
  working_sessions: number;


我的连接配置如下:


  type: 'postgres',
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT),
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  entities: [Task],
  synchronize: true,

我想知道我是否配置错误。

【问题讨论】:

【参考方案1】:

在函数中定义列名:

... = await taskRepository.findOne(id:'c3af6724-ba96-4144-88a6-b351282ec3cb');

【讨论】:

以上是关于TypeORM 在使用 .find()/.findOne() 时返回 undefined的主要内容,如果未能解决你的问题,请参考以下文章

在 find() 中 TypeORM 查询相关的 oneToMany 值

TypeORM getRepository.find() 不包括外键字段

Typeorm 装饰器不是函数

NestJS TypeORM mongodb 在数组列中查找不起作用

TypeORM 选择列名的别名

TypeORM查找where子句,如何在多个参数中添加where