NestJS 和 TypeORM 迁移的配置:从单一 TS 文件开始
2024-01-13 19:59:31
使用 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 的新表:
- 在 migration.ts 文件中,创建一个名为 AddProductsTable 的迁移。
- 在 up() 方法中,使用 queryRunner.createTable() 创建 products 表及其列。
- 在 down() 方法中,使用 queryRunner.dropTable() 回滚迁移,删除 products 表。
- 使用 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 命令从数据库导入所有迁移。