TypeORM - Как создать новую таблицу и запустить миграцию автоматически в производственном режиме? - PullRequest
0 голосов
/ 16 июня 2019

Я хотел бы создать новую таблицу в MySQL и автоматически запустить миграцию TypeORM, когда приложение работает в производственном режиме.

Примечание. Эта новая таблица не создается до запуска приложения в производственном режиме.

Согласно Документация по миграции , для запуска миграции необходимо использовать команду миграция типа: запустить команду .

Из-за того, что моя новая таблица создается только тогда, когда приложение называется CreateNewTableTimeStamp (inputTableName) .up , в этот момент будет инициировано создание новой таблицы в моей базе данных.

Но я не нашел решения, как выполнить эту миграцию автоматически, так как я не могу запустить миграцию typeorm: запускайте вручную каждый раз, когда приложение вызывает этот метод для создания новой таблицы.

После создания этой таблицы я запишу новые данные в этой новой таблице.

Может ли кто-нибудь помочь в этом вопросе?

Спасибо.

Мой новый код таблицы:

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);
  }
}

1 Ответ

0 голосов
/ 22 июня 2019

Как упомянуто @zenbeni в комментарии, запускать миграции с кода вашего сервера не рекомендуется, поскольку миграция всегда должна быть неизменной и воспроизводиться.

Поэтому я бы изменил свой дизайн, чтобы не выполнять миграции с моего серверного кода.

...