返回

NestJS 和 TypeORM 迁移的配置:从单一 TS 文件开始

前端

使用 NestJS 和 TypeORM 管理数据库迁移

NestJS 和 TypeORM 简介

NestJS 是一个用于构建高效可扩展 Node.js 应用程序的框架。TypeORM 是一个对象关系映射器 (ORM),可简化数据对象与数据库表之间的映射。使用 TypeORM,您可以轻松定义实体类,这些类代表您的数据库表,并处理数据库交互,例如创建、读取、更新和删除 (CRUD) 操作。

什么是迁移?

迁移是管理数据库架构变更的方法,允许随着时间的推移更新数据库的结构。当您更改实体类或需要向数据库添加或删除表时,您需要创建迁移以应用这些更改。

配置迁移

要配置迁移,请在您的 NestJS 项目中安装 TypeORM 和其他必需的依赖项。然后,创建一个名为 migration.ts 的 TypeScript 文件,并使用 @MigrationOptions 装饰器来配置迁移。

@MigrationOptions()
export class Migration {
  name = 'AddProductsTable';

  async up(queryRunner: QueryRunner) {
    await queryRunner.createTable('products', {...});
  }

  async down(queryRunner: QueryRunner) {
    await queryRunner.dropTable('products');
  }
}

运行迁移

使用 typeorm-cli 工具运行迁移。安装它并运行以下命令:

typeorm migration:run

此命令将运行所有未运行的迁移。您还可以使用 typeorm migration:generate 命令生成新的迁移脚本。

示例:创建产品表

考虑一个场景,您需要向数据库中添加一个新表来存储产品。以下是如何使用 NestJS 和 TypeORM 创建一个名为 products 的新表:

  1. 在 migration.ts 文件中,创建一个名为 AddProductsTable 的迁移。
  2. 在 up() 方法中,使用 queryRunner.createTable() 创建 products 表及其列。
  3. 在 down() 方法中,使用 queryRunner.dropTable() 回滚迁移,删除 products 表。
  4. 使用 typeorm migration:run 命令运行迁移,在数据库中创建 products 表。

结论

迁移是管理数据库架构变更的重要工具。通过 NestJS 和 TypeORM,您可以轻松配置和运行迁移,确保数据库与您的实体类保持同步。本文提供了配置、运行和理解迁移的基础知识,帮助您在项目中有效使用它们。

常见问题解答

1. 如何查看未运行的迁移?

使用 typeorm migration:list 命令列出所有未运行的迁移。

2. 如何回滚迁移?

使用 typeorm migration:revert 命令回滚最后一个运行的迁移。

3. 如何生成新的迁移脚本?

使用 typeorm migration:generate 命令生成新的迁移脚本。

4. 如何将迁移导出到数据库中?

使用 typeorm migration:export 命令将所有迁移导出到数据库中。

5. 如何从数据库导入迁移?

使用 typeorm migration:import 命令从数据库导入所有迁移。