2014-04-28 38 views
1

我對Sequelize中如何處理遷移有點困惑。它在文檔中被告知我應該在服務器啓動時運行所有的後續遷移嗎?

migrator.migrate ... will execute all the up methods within your pending migrations

是否未決意味着Sequelize跟蹤哪些遷移已在數據庫上運行在手,其中有沒有一些持久存儲?如果是這樣,是否意味着我應該在應用程序啓動時加載遷移文件夾中的所有遷移並嘗試運行它們?

如果沒有,最好的做法是跟蹤當前服務器上應該運行哪些遷移?

回答

2

當你說pending是指尚未在數據庫上運行的遷移時,你是對的。

如果該應用尚未部署,則不需要運行遷移來更新數據庫。您可以改爲更新模型以反映所需的更改。您可以始終在本地放置/創建數據庫,以便更改顯示,但前提是您仍在開發中。

如果您的應用程序已部署,數據庫已存在並且您想更新它,那麼當您運行遷移命令時,它將在您的遷移文件夾中運行每個新文件。如果您正在處理應用程序上的多個環境和協作者,我只會將遷移文件保存在該文件夾中。一旦創建並運行新的遷移,之前的遷移不會再次運行,因此您不必擔心它們。

0

Sequelize確實跟蹤哪些遷移已在永久存儲中運行。你有一些關於這種存儲機制的選項。

  • 將它保存在JSON文件中。您可以指定路徑和文件名稱。
  • 保存在您的數據庫中。默認情況下,它將存儲在名爲SequelizeMeta的表中,但您可以更改該表。
  • 定義通過您創建的模塊訪問的自定義存儲機制。此模塊必須公開與某些預定方法的對象,如

    logMigration: function (migrationName)

    unlogMigration: function (migrationName)

    系統會打電話給你的對象上這些方法,並期望它在一些地方保存相應的數據。

Check this out欲瞭解更多信息。

相關問題