【问题标题】:How to generate migration file in typeorm using nest js如何使用nest js在typeorm中生成迁移文件
【发布时间】:2021-02-23 19:43:36
【问题描述】:

我是新这个框架 Nest JS 并创建了示例 Restful API 但无法迁移实体文件。我尝试了很多方法它不起作用。第一次运行迁移命令以生成迁移文件,它工作正常。但是第二次创建一个新实体然后运行迁移命令它显示没有更改消息如何解决此问题。

数据库配置 .ts 文件

{
            type: 'postgres',
            host: process.env.POSTGRES_HOST,
            port: parseInt(process.env.POSTGRES_PORT) || 5432,
            database: process.env.POSTGRES_DATABASE,
            username: process.env.POSTGRES_USER,
            password: process.env.POSTGRES_PASSWORD,
            entities: ["dist/**/*.entity{ .ts,.js}"],
            synchronize: true,
            "migrations": ["dist/migrations/*{.ts,.js}"],
            "migrationsTableName": "migrations_typeorm",
            // ssl:{
            //     rejectUnauthorized:false
            // }
          }

迁移命令

创建和生成迁移命令

npx typeorm migration:create -n User -d src/migrations

npx typeorm migration:generate -n User -d src/migrations

运行迁移文件

npx typeorm migration:run

【问题讨论】:

    标签: nestjs nestjs-swagger nestjs-config nestjs-jwt nestjs-gateways


    【解决方案1】:

    在您的情况下,您应该只使用migration:generate。这将检查您当前的数据库结构并将其与实体文件进行比较,并在此基础上生成一个带有更改的新迁移文件。

    您遇到的问题可能是由于覆盖造成的。

    migration:create 将生成一个新的空文件,您运行migration:generate 它不会覆盖该文件。

    如果您想编写自己的迁移,您可以使用migration:create 作为一种简单易用的方式来命名它并自动构建它。

    编辑:

    还要确保将 synchronize 设置为 false,因为它会根据实体和更改自动迁移您的数据。

    我总是关闭此功能并手动生成或编写迁移,因为它提供了最大的控制权。

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 2019-11-17
      • 2020-12-30
      • 2022-07-20
      • 1970-01-01
      • 2021-08-06
      • 2021-12-05
      • 2022-01-04
      • 2021-10-17
      相关资源
      最近更新 更多