我是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时,可以看到author
和genre
表是与重复表一起创建的,它们共享同一组列:
author
author_entity
genre
genre_entity
book
是设计使然吗?
book
实体没有重复的原因是什么?如果这是意外行为,那么我应该寻找什么线索?
答案 0 :(得分:1)
我的猜测是,您最初可能将您的作者和流派实体命名为AuthorEntity
和GenreEntity
。我认为synchronize
不会自动删除已重命名实体的数据库表;它只会创建一个新表。
一个简单的解决方案是将表删除到数据库中,然后重新运行同步,因此您不再需要那些孤立的表。