迁移的工作原理

一旦上线生产环境,你将需要将模型更改同步到数据库中。通常在数据库中获取数据后,使用synchronize:true进行生产模式同步是不安全的。 因此这时候使用迁移,可以解决此类问题。

迁移只是一个带有 SQL 查询的文件,用于更新数据库架构并将新更改应用于现有数据库。

假设你已经有一个数据库和一个 post 实体:

  1. import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";
  2. @Entity()
  3. export class Post {
  4. @PrimaryGeneratedColumn()
  5. id: number;
  6. @Column()
  7. title: string;
  8. @Column()
  9. text: string;
  10. }

这些实体在生产环境中运行了几个月而没有任何变化。数据库中产生了有几千个 posts。

现在你需要创建一个新版本并将title重命名为name。你会怎么做?

你需要使用以下 sql 查询(postgres dialect)创建新的迁移:

  1. ALTER TABLE "post" RENAME COLUMN "title" TO "name";

运行此 sql 查询后,你的数据库架构就可以使用新的代码库了。TypeORM 提供了一个可以编写此类 SQL 查询并在需要时运行它们的位置。这个位置就叫”migrations”。