TypeORM创建双表-是设计使然吗?

时间:2019-12-10 09:57:49

标签: nestjs typeorm

我是TypeORM的新手。在NestJS + TypeORM / postgres应用中,我有这三个非常简单的实体

@Entity()
export class Book extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @Column()
  year: string;
}


@Entity()
export class Author extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  firstName: string;

  @Column()
  lastName: string;
}

@Entity()
export class Genre extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

如您所见,到目前为止,还没有任何关系,没有自定义表或列的名称,纯默认实体。

当我使用synchronize: true启动应用程序并查看pgAdmin时,可以看到authorgenre表是与重复表一起创建的,它们共享同一组列:

author
author_entity
genre
genre_entity
book

是设计使然吗? book实体没有重复的原因是什么?如果这是意外行为,那么我应该寻找什么线索?

1 个答案:

答案 0 :(得分:1)

我的猜测是,您最初可能将您的作者和流派实体命名为AuthorEntityGenreEntity。我认为synchronize不会自动删除已重命名实体的数据库表;它只会创建一个新表。

一个简单的解决方案是将表删除到数据库中,然后重新运行同步,因此您不再需要那些孤立的表。