【问题标题】:typeorm synchronize in productiontypeorm 在生产中同步
【发布时间】:2022-01-24 17:20:28
【问题描述】:

在 Typeorm 中有一个名为 synchronize 的功能。您可以将实体与数据库同步,因此无需迁移。但如您所知,synchronize 对生产很危险。

这里有个问题,我应该什么时候使用synchronize 功能?想象一下(在开发环境中)我开始使用synchronize 功能。如果我在没有迁移的情况下在生产中禁用它,我的生产数据库将如何创建?

另外,我将在一些里程碑上交付项目。我应该在第一个里程碑还是在最后禁用它?对于长期维护,我应该在第一个生产版本后使用synchronize disabled 并使用迁移吗?

任何想法都将不胜感激。

【问题讨论】:

  • 我也想知道这个过程应该是什么......你认为我们可以使用除 typeorm 迁移之外的其他东西吗?因为我刚刚尝试过,但我遇到了可空字段的错误......

标签: node.js typeorm


【解决方案1】:

TypeORM 中的迁移 尽管同步是将实体与数据库同步的一个不错的选择,但它对于生产数据库来说是不安全的。因此,迁移可以成为生产数据库中更安全迁移的替代解决方案。 进行迁移时,您应该按照以下步骤操作。

1.更新 Typeorm 配置文件和 package.json 文件

您应该在 Typeorm 配置文件中将 synchronize 属性更改为 false 作为防止模式同步的第一步。 然后在 package.json 文件下的 scripts 属性中添加如下命令。

“typeorm”:“ts-node ./node_modules/typeorm/cli -f ./ormconfig.json”

2。生成迁移

npm 运行 typeorm 迁移:生成 -n

您可以在此处为您的迁移命名。运行命令后,你会在 migrations 下找到一个名为 .

的迁移文件

在迁移文件中,有 up 和 down 两个函数,其中 up 函数负责运行迁移,down 函数负责恢复迁移。

3.运行迁移

npm run typeorm migration:run

此命令将运行您在上述命令中创建的迁移。运行该命令时,会执行迁移文件中的 up 函数。

4.恢复迁移

npm run typeorm migration:revert

此命令将恢复您在上述命令中已执行的迁移。当您运行此命令时,它将恢复您已经完成的所有迁移。基本上,它会运行迁移文件的down命令。

【讨论】:

  • 您好,感谢分享。但我知道迁移和所有命令。大多数情况下,我的问题是关于何时以及在哪个阶段使用迁移。
【解决方案2】:

同步是启动运行的一个很好的选择,但在我看来,您应该始终默认创建迁移。这是因为它将强制您运行类似于生产环境的开发环境,这始终是关键。您想让您的开发环境像生产环境一样运行。

migration:generate 是从实体构建迁移文件的绝佳中间地带。

【讨论】:

    【解决方案3】:

    我现在也必须决定这个问题。我将仅对我的 e2e 测试数据库使用同步选项。正如 Roger King 已经提到的,您希望您的开发和生产环境使用相同的工具来更改数据库。这样可以防止它们之间出现不同的行为。

    【讨论】:

      猜你喜欢
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多