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

2023-12-30

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

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

根据迁移文档 https://github.com/typeorm/typeorm/blob/master/docs/migrations.md,需要使用类型迁移:运行运行迁移的命令。

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

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

创建该表后,我会将新数据写入该新表中。

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

Thanks.

我的新表代码:

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

or

node ./path/to/compiled/migrations.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeORM - 如何在生产模式下创建新表并自动运行迁移? 的相关文章

随机推荐

  • --disable-web-security 在 Chrome 中工作吗?

    我正在尝试做一个简单的测试 而不更改任何涉及的服务器端代码跨域 https developer mozilla org en US docs Web HTTP CORS AJAX调用 https www w3schools com xml
  • 如何使用cached_network_image预加载图像?

    我刚刚实现了 Flutter包cached network image我想知道如何预加载图像 以便稍后可以立即使用它们 我从我们的服务器检索稍后将使用的所有图像网址 我已经定义了自定义缓存管理器 getter class LocalCach
  • 如何在 Linux 中针对分段错误生成核心转储?

    我的 Linux 中有一个进程出现分段错误 我怎样才能告诉它在失败时生成核心转储 这取决于您使用的 shell 如果您使用的是 bash 则 ulimit 命令控制与程序执行相关的多个设置 例如是否应该转储核心 如果您输入 ulimit c
  • 仅当属性为 null 时,如何从 lombok 构建器中排除该属性

    我有一个用户模型类 如下所示 JsonSerialize Getter Setter FieldDefaults level AccessLevel PRIVATE Builder public class User Default Str
  • 基于 Python 中较小的数据集生成较大的综合数据集

    我有一个包含 21000 行 数据样本 和 102 列 特征 的数据集 我希望根据当前数据集生成一个更大的合成数据集 例如 100000 行 这样我就可以将其用于机器学习目的 我在这篇文章中提到了 Prashant 的答案https sta
  • 替换“/”之前的任何字符串,PHP

    我想替换 之前的任何字符串 无论字符串长度如何 谢谢 让 一种方式 假设您想更改第一个 之前的字符串 str anystring the rest blah s explode str s 0 new string print r impl
  • 谷歌浏览器本地存储保存在哪里?

    某些网站显示正在使用本地存储 在 Google Chrome 中 CTRL I 资源选项卡 本地存储 例如 StackOverflow 有一个 login prefs 键和我的默认登录提供程序 所以据我所知它是一个 json 对象 这些数据
  • Spring embeddeb 数据库表已存在错误

    我正在尝试使用嵌入式数据库运行 Spring Boot 应用程序 在 bean 初始化期间 由于某种原因 我的表创建脚本被调用两次 第二次调用失败 并出现 表已存在 错误 下面是我的代码 可能是什么问题 Configuration publ
  • MatLab - 将函数应用于矩阵中的每一行

    我有一个矩阵 行数为 4 个整数 列数未指定 取决于文本文件 我想独立地将函数应用于矩阵的每一行 该函数有 4 个输入和 2 个输出 我尝试使用 arrayfun 函数来执行此操作 但每当我调用该函数时 都会收到一条错误消息 输入参数不足
  • 如何在木偶上使用参数化正则表达式(例如/${user}/)进行测试?

    我需要获取用户的主目录 我决定通过解析 getent passwd 字符串来获取它 这是一个自定义事实构建为 内容的串联 etc passwd 并借助正则表达式提取相关信息 当我测试 getent带有固定字符串 adam 提取工程 if g
  • 如何在C#中使用Either类型?

    佐兰 霍瓦特 https www pluralsight com authors zoran horvat提议使用Either类型以避免空检查和不要忘记处理问题在执行操作期间 Either在函数式编程中很常见 为了说明其用法 Zoran 展
  • 如何对“新风格”Django 中间件进行单元测试

    我正在学习如何对 Django 中间件进行单元测试 在 旧式 中间件中 使用以下命令加载中间件非常容易process request 测试结果 例如 def test session self request self factory ge
  • 衍生品警告没有意义

    我收到以下形式的警告 DerivativesWarning Constraints or objectives traj linkages stage 1 grav turn alpha final coast 1 alpha initia
  • 错误显示:dyld_sim 与加载的进程不兼容

    我有一个 iPhone 中运行的应用程序的源代码 适用于 iOS 7 及之前的操作系统 但 iOS 8 0 及更高版本不支持该应用程序 当我尝试编译代码时 它可以正常执行所有文件 但会引发体系结构不匹配错误 在控制台中 dyld dyld
  • 如何更改查询以仅保留叶节点

    我有包含以下数据的表 id parent id short name 6 5 cpu 7 5 ram 14 9 tier a 15 9 rfc1918 16 9 tolerant 17 9 nononymous 13 12 cloudsta
  • HTTPServletRequest getParameterMap() 与 getParameterNames

    HTTPServletRequestreq 有一个方法getParameterMap 但是 这些值返回一个String 代替String 对于发布数据为 姓名 玛丽 姓氏 约翰 年龄 20 我在帖子数据中看到它不是一个数组 但是getPar
  • AngularJS 根据用户输入切换样式表

    如何根据用户单击的按钮来切换 切换 AngularJS 页面的样式表 您实际上可以在 html 级别放置一个控制器并修改link标签的href Demo http plnkr co edit jBtP6FfmeRzOYUCnHg3t p p
  • 如何检测通知/系统栏何时打开

    我需要知道系统 通知栏何时在我的应用程序中打开 但我找不到任何真正的解决方案 所以我将一些东西组合在一起 看起来效果很好 在详细介绍实现之前 我将简要解释一下我的 非常老套的 逻辑 当某个 Activity 由于任何原因不再对用户可见时 将
  • xtensor 类型与 NumPy 简单归约的性能对比

    我正在尝试xtensor python https github com QuantStack xtensor python并开始编写一个非常简单的求和函数 之后使用千篇一律的设置 https github com QuantStack x
  • TypeORM - 如何在生产模式下创建新表并自动运行迁移?

    我想在 MySQL 中创建新表 并在应用程序在生产模式下运行时自动运行 TypeORM 迁移 注意 此新表不是在生产模式下启动应用程序之前创建的 根据迁移文档 https github com typeorm typeorm blob ma