typescript 类型ORM引用错误:X未定义

2nc8po8w  于 2023-01-02  发布在  TypeScript
关注(0)|答案(3)|浏览(136)

我正在使用TypeORM设置数据库表。我有一个User实体和一个MediaList实体。UserMediaList实体具有一对多关系,如下所示:

@Entity('users')
export class User extends BaseEntity {
  @PrimaryGeneratedColumn('uuid') public id: string;

  @Column('varchar', {length: 50, name: 'first_name'})
  public firstName: string;

  @Column('varchar', {length: 50, name: 'last_name'})
  public lastName: string;

  @Column('varchar', {nullable: false, length: 255})
  public email: string;
  .
  .
  .
  @OneToMany((type) => MediaList, (mediaList) => mediaList.owner)
  public mediaLists: MediaList[];
}

@Entity('media_list')
export class MediaList extends BaseEntity {

  @PrimaryGeneratedColumn('uuid') public id: string;

  @Column('varchar', {length: 50})
  public title: string;

  @ManyToOne((type) => User, (user) => user.mediaLists)
  public owner: User;
}

我创建了一个用户,如下所示:

const user = User.create({
        firstName: 'john',
        lastName: 'doe',
        email,
        password,
        permissions: generalPermissions,
    });

    await user.save();

当我保存用户时,我得到一个引用错误:

(node:16708) UnhandledPromiseRejectionWarning: ReferenceError: MediaList is not defined

我做错了什么?Map不正确吗?

gojuced7

gojuced71#

问题基本上出在ESM上,因为循环引用给予空值。
https://github.com/typeorm/typeorm/issues/2059

hm2xizp9

hm2xizp92#

对于任何人来说
ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)
'ReferenceError: Entity is not defined'
可能是因为您没有在typeormconfig中指定实体

export const typeOrmConfig: TypeOrmModuleOptions = {
  type: "postgres",
  host: "localhost",
  port: 5432,
  username: "admin",
  password: "admin",
  database: "yourdatabase",
  entities: [your entities], //Dont use [__dirname + "/../**/*.entity{.ts,.js}"]
  synchronize: true,
};
t30tvxxf

t30tvxxf3#

当我尝试与数据库中现有的表建立关系时,我遇到了同样的问题。奇怪的是,我没有这个问题,只与特定的三个表有关系。
参考错误:未定义MySomeEntity
我没有时间去调查到底是什么问题,但肯定要调查并报告给开发人员。
我刚刚通过删除所有@OneToMany/@ManyToOne装饰器,并在需要链接查询中的关系时使用leftJoinAndMapMany/leftJoinAndMapOne代替leftJoinAndSelect来解决这个问题。
它起作用了。

相关问题