我应该在服务器启动时运行所有的后续迁移吗?

我对Sequelize中如何处理迁移有点困惑。 它在文档中被告知

migrator.migrate …将执行您的未决迁移中的所有up方法

挂起是否意味着Sequelize跟踪哪些迁移已经在手头的数据库上运行,哪些没有在某些永久存储中? 如果是这样,是否意味着我应该在应用程序启动时加载迁移文件夹中的所有迁移并尝试运行它们?

如果没有,最好的做法是跟踪哪些迁移应该在当前服务器上运行?

当你说待处理是指尚未在数据库上运行的迁移时,你是对的。

如果该应用尚未部署,则不需要运行迁移来更新数据库。 您可以改为更新模型以反映所需的更改。 您可以始终在本地放置/创build数据库,以便更改显示,但前提是您仍在开发中。

如果部署了应用程序,则数据库已经存在,并且要更新它,那么当您运行迁移命令时,它将运行迁移文件夹中的每个新文件。 如果您正在处理应用程序上的多个环境和协作者,我只需将迁移文件保存在该文件夹中即可。 一旦创build并运行新的迁移,以前的迁移不会再次运行,因此您不必担心这些迁移。

Sequelize确实跟踪哪些迁移已经在持久存储中运行。 你有什么select存储机制是什么。

  • 把它保存在一个JSON文件中。 您可以指定path和文件名称。
  • 保存在你的数据库中。 默认情况下,它将被存储在一个名为SequelizeMeta的表中,但是你可以改变它。
  • 定义通过您创build的模块访问的自定义存储机制。 这个模块必须用一些预定义的方法暴露一个对象,比如

    logMigration: function (migrationName)

    unlogMigration: function (migrationName)

    系统会在你的对象上调用这些方法,并期望它在某处存储适当的数据。

检查了解更多信息。