typeorm 在生产中同步

在 Typeorm 中有一个称为 synchronize 的特性。您可以将实体与数据库同步,因此无需迁移。但是你知道 synchronize 对生产来说是危险的。

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

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

任何想法将不胜感激。

stack overflow typeorm synchronize in production
原文答案

答案:

作者头像

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 运行 typeorm 迁移:运行

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

4。还原迁移

npm 运行 typeorm 迁移:还原

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

作者头像

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

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

作者头像

我现在还必须决定这个问题。我将仅对我的E2E测试DB使用Syncronize选项。正如罗杰·金(Roger King)已经提到的那样,您希望使用相同的工具来更改数据库。这样,您可以防止它们之间的不同行为。