TypeOrm ReferenceError:未定义X

时间:2019-03-31 08:12:34

标签: postgresql typescript typeorm

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

@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

我在这里做错了什么?我的映射不正确吗?

2 个答案:

答案 0 :(得分:0)

当我尝试与数据库中的现有表建立关系时,我遇到了同样的问题。奇怪的是,我只在具有特定关系的三个表中没有其余表的问题。

  

ReferenceError:未定义MySomeEntity

我没有时间调查确切的问题出在哪里,但是绝对必须对其进行调查并报告给开发人员。

我刚刚通过删除所有@ OneToMany / @ ManyToOne装饰器并在需要在查询中链接我的关系时使用leftJoinAndMapMany / leftJoinAndMapOne而不是leftJoinAndSelect来解决了这个问题。

有效。

答案 1 :(得分:0)

  

问题基本上与ESM有关,因为循环引用给出了空值。

https://github.com/typeorm/typeorm/issues/2059