【问题标题】:Generating migrations doesn't see my connection生成迁移看不到我的连接
【发布时间】:2020-09-15 06:31:59
【问题描述】:

我将与数据库的连接设为单独的模块

@Module({
    imports: [
        TypeOrmModule.forRootAsync({
            imports: [ConfigModule],
            inject: [ConfigService],
            useFactory: configService => ({
                type: configService.get('DATABASE_TYPE'),
                host: configService.get('DATABASE_HOST'),
                port: configService.get('DATABASE_PORT'),
                username: configService.get('DATABASE_USERNAME'),
                password: configService.get('DATABASE_PASSWORD'),
                database: configService.get('DATABASE_NAME'),
                entities: ['./dist/**/*.entity.{js,ts}'],
                synchronize: false,
                migrationsRun: true,
                logging: true,
                migrations: ['./dist/modules/database/migration/*.{js,ts}'],
                cli: {
                    migrationsDir: 'src/modules/database/migration',
                },
            }),
        }),
    ],
})
export class DatabaseModule {}

这在 docker 容器中运行良好。但是当我想运行迁移的创建时,我得到了错误

Error: No connection options were found in any orm configuration files.
    at ConnectionOptionsReader.<anonymous> (/Users/user1/Documents/app/src/connection/ConnectionOptionsReader.ts:43:19)

我使用迁移的命令

        "migration:generate": "ts-node node_modules/.bin/typeorm migration:generate -n",
        "migration:run": "ts-node node_modules/.bin/typeorm migration:run",
        "migration:revert": "ts-node node_modules/.bin/typeorm migration:revert"

在命令中,我没有指定连接 konyig,据我所知 orm 找不到我的连接配置,我该如何告诉我?

【问题讨论】:

    标签: migration nestjs typeorm


    【解决方案1】:

    问题在于 TypeORM 的 CLI 不知道在您的 Nest 应用程序中您使用 TypeormModule 来配置连接。 CLI 需要采用documentation 中描述的以下格式之一的配置。

    因此,解决您的问题的最简单方法是创建一个名为 ormconfig.js 的文件并在此处设置您的连接配置。像这样:

    module.exports = {
      "type": "mysql",
      "host": "localhost",
      "port": 3306,
      "username": "test",
      "password": "test",
      "database": "test"
    }
    

    假设您的 configService 从环境变量中读取值,您也可以这样做:

    module.exports = {
      "type": "mysql",
      "host": process.env.DB_HOST,
      "port": process.env.DB_PORT,
      "username": process.env.DB_USERNAME,
      "password": process.env.DB_PASSWORD,
      "database": process.env.DB_DATABASE
    }
    

    使配置与应用中的配置相同。

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 2016-10-17
      • 2022-06-18
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2016-05-18
      • 1970-01-01
      相关资源
      最近更新 更多