生成
TypeORM 能够根据你对实体所做的更改,自动生成迁移文件,比较它们与服务器上现有的数据库架构。
自动迁移生成会创建一个新的迁移文件,并写入所有必须执行的 SQL 查询以更新数据库。如果未检测到任何更改,该命令将以代码 1 退出。
假设你有一个包含 title 列的 Post 实体,你将 title 的名称更改为了 name。
你可以使用以下命令之一生成迁移:
typeorm migration:generate -d <path/to/datasource> <migration-name>
-d 参数的值应指定你定义 DataSource 实例的路径。
另外,你也可以使用 --name 参数指定名称:
typeorm migration:generate -- -d <path/to/datasource> --name=<migration-name>
或者使用完整路径:
typeorm migration:generate -d <path/to/datasource> <path/to/migrations>/<migration-name>
假设你使用了 post-refactoring 作为名称,它将生成一个名为 {TIMESTAMP}-post-refactoring.ts 的新文件,内容如下:
import { MigrationInterface, QueryRunner } from "typeorm"
export class PostRefactoringTIMESTAMP implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "post" ALTER COLUMN "title" RENAME TO "name"`,
)
}
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "post" ALTER COLUMN "name" RENAME TO "title"`,
)
}
}
另外,你还可以使用 o