首页 > 解决方案 > TypeORM:在没有专用 ormconfig 文件的情况下生成迁移

问题描述

在TypeORM (json、env、yml...)提供的几种连接数据库的方法中,我选择使用常规 TypeScript 文件在项目代码中以编程方式设置连接选项,如下所示:

// src/database/createConnection.ts

import { createConnection } from 'typeorm';

    const connectionOptions = {
        type: 'postgres',
        host: POSTGRES_HOST_PROD,
        port: Number(POSTGRES_PORT),
        username: POSTGRES_USER,
        password: POSTGRES_PASSWORD,
        database: POSTGRES_DB,
        entities: ['build/entities/**/typeDef.js'],
        migrations: ['build/database/migrations/*.js'],
        cli: {
            migrationsDir: 'src/database/migrations/'
        }
    };

await createConnection(connectionOptions);

使用常规.env文件提供的值。

我的问题是,当尝试通过创建迁移文件时npx typeorm migration:generate -n initial出现错误,因为命令需要存在特定的 orm 配置文件(ormconfig.env、ormconfig.json 等)。

由于我已经设置了连接选项,这不仅是多余的,它还将被处理而不是我已经在.ts文件中设置的配置,我看到的唯一解决方案是重命名我的 (non-typeorm -specific ).env文件以匹配特定的 TypeORM 变量名称,我不想这样做。


TL:DR有没有一种方法可以在不创建专用 orm 配置文件的情况下生成 TypeORM 迁移?


标签: node.jstypescriptpostgresqlmigrationtypeorm

解决方案


哦,原来 TypeORM 已经有一个内置选项,不需要额外的 ormconfig 文件,只需将属性添加migrationsRun: true到连接选项(确保synchronize设置为 false)。

例如:

从'typeorm'导入{createConnection};

const connectionOptions = {
    type: 'postgres',
    host: POSTGRES_HOST_PROD,
    port: Number(POSTGRES_PORT),
    username: POSTGRES_USER,
    password: POSTGRES_PASSWORD,
    database: POSTGRES_DB,
    migrationsRun: true,
    entities: ['build/entities/**/typeDef.js'],
    migrations: ['build/database/migrations/*.js'],
    cli: {
        migrationsDir: 'src/database/migrations/'
    }
};

等待创建连接(连接选项);


推荐阅读