迁移的工作原理
一旦上线生产环境,你将需要将模型更改同步到数据库中。通常在数据库中获取数据后,使用synchronize:true
进行生产模式同步是不安全的。 因此这时候使用迁移,可以解决此类问题。
迁移只是一个带有 SQL 查询的文件,用于更新数据库架构并将新更改应用于现有数据库。
假设你已经有一个数据库和一个 post 实体:
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
text: string;
}
这些实体在生产环境中运行了几个月而没有任何变化。数据库中产生了有几千个 posts。
现在你需要创建一个新版本并将title
重命名为name
。你会怎么做?
你需要使用以下 sql 查询(postgres dialect)创建新的迁移:
ALTER TABLE "post" RENAME COLUMN "title" TO "name";
运行此 sql 查询后,你的数据库架构就可以使用新的代码库了。TypeORM 提供了一个可以编写此类 SQL 查询并在需要时运行它们的位置。这个位置就叫”migrations”。