Я настраиваю свои таблицы базы данных с помощью TypeORM. У меня есть сущность User и сущность MediaList. User имеет отношения OneToMany с сущностью MediaList следующим образом:
@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
Что я здесь делаю неправильно? Мои сопоставления неверны?





У меня была такая же проблема, когда я пытался установить отношения с моими существующими таблицами в базе данных. Что странно, у меня нет этой проблемы с остальными таблицами только с определенными тремя таблицами, которые имеют отношения.
ReferenceError: MySomeEntity is not defined
У меня не было времени исследовать, где именно была проблема, но определенно ее нужно исследовать и сообщить разработчику.
Я просто решил эту проблему, удалив все декораторы @OneToMany/@ManyToOne и используя leftJoinAndMapMany/leftJoinAndMapOne вместо leftJoinAndSelect, когда мне нужно связать мои отношения в запросе.
Оно работает.
The problem is basically with ESM, because circular references give null values.