gpt4 book ai didi

mysql - TypeORM - 如何在生产模式下创建新表并自动运行迁移?

转载 作者:行者123 更新时间:2023-11-29 03:15:56 25 4
gpt4 key购买 nike

我想在 MySQL 中创建新表并在应用程序以生产模式运行时自动运行 TypeORM 迁移。

注意:这个新表不是在生产模式下启动应用程序之前创建的。

根据 Migration Documentation ,需要使用typeorm migration:run命令来运行迁移。

由于我的新表仅在应用程序调用 CreateNewTableTimeStamp(inputTableName).up 时创建,此时它将触发在我的数据库中创建新表。

但我没有找到如何自动执行此迁移的解决方案,因为每次应用程序调用此方法创建新表时,我都不可能手动运行 typeorm migration:run

创建好这张表之后,我会往这张新表中写入新的数据。

有人可以协助解决这个问题吗?

谢谢。

我的新表代码:

class CreateNewTableTimeStamp implements MigrationInterface  {

tableName: string;

constructor (inputTableName: string) {
this.tableName = inputTableName
}

async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.createTable(new Table({
name: this.tableName,
columns: [
{
name: "id",
type: "int",
isPrimary: true
},
{
name: "email",
type: "varchar",
}
]
}), true)
}

async down(queryRunner: QueryRunner): Promise<any> {
const table = await queryRunner.getTable(this.tableName);
await queryRunner.dropTable(this.tableName);
}
}

最佳答案

对于希望出于测试和目的运行迁移的人不在生产环境中

import {
createConnection,
ConnectionOptions,
Connection,
} from 'typeorm';

import { YourEntity } from 'path/to/your/entity.ts';

const testConfig: ConnectionOptions = {
type: 'mongodb',
url: 'mongodb://localhost:27017',
database: 'test',
useUnifiedTopology: true,
entities: [YourEntity],
synchronize: true,
migrations: ['migrations/*YourMigrations.ts'],
};

let connection: Connection;

connection = await createConnection({ ...testConfig });
await connection.synchronize(true);

await connection.runMigrations({
transaction: 'all',
});

运行使用:

node -r ts-node/register ./path/to/migrations.ts

node ./path/to/compiled/migrations.js

关于mysql - TypeORM - 如何在生产模式下创建新表并自动运行迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com