0

現在、 SEQUELIZE ORMを使用している NODE JS の作業を開始しました。Sequelize は、 sequelize-cliを使用した移行をサポートしていますが、ドキュメントでは、移行での使用方法に関するすべての詳細が説明されているわけではありません。Sequelize CLI を使用して以下が可能かどうかを知りたいです。PROD の展開を考えると、次の点が重要です。

  1. モデルを見て移行ファイルを自動生成
  2. モデルに加えられた新しい変更に基づいて移行ファイルを自動生成
  3. PROD で実行できるように、移行の SQL スクリプトを生成します。
  4. 環境固有の移行 (Dev、Stage、Prod

ドキュメントを確認しましたが、上記の点について説明していません。これで私を助けてください、私

4

1 に答える 1

3

移行を使用するという考えは、移行がデータベースの王様であるということです。これらはデータベース スキーマを変更する唯一のものであり、データベース スキーマを変更する唯一の方法は、単純に移行を実行することです。

あなたの質問に答えて:

1. モデルを見て移行ファイルを自動生成する

しないでください。移行を手動で生成します。特定のテーブルの列を変更する場合は、最初に移行を生成してから、次に対応するモデルを変更します。移行はデータベースの王様です。モデルは二の次です。

2.モデルに加えられた新しい変更に基づいて移行ファイルを自動生成する

しないでください。同上。

3. 移行の SQL スクリプトを生成して、これを PROD で実行できるようにします。

しないでください。移行自体を本番環境で直接実行し、本番データベースに接続できるはずです.devで実行するのと同じようにsequelize db:migrate. sequelize db:migrate新しいコードを本番環境にプッシュするたびに、デプロイ スクリプトが本番データベースで自動的に実行されます。

4. 環境固有の移行 (Dev、Stage、Prod)

絶対にしないでください。すべての移行は、すべての環境で実行する必要があります。環境に関係なく、データベースには同じスキーマが必要です。

更新: 新しいブール値の列を追加するために動作する migartion の例を次に示します (アップとダウンの両方で実行):

'use strict';

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.addColumn(
      'my_table',
      'my_new_column',
      {
        type: Sequelize.BOOLEAN,
      }
    )
  },

  down: function (queryInterface, Sequelize) {
    return queryInterface.removeColumn('my_table', 'my_new_column')
  }
};
于 2016-12-14T22:01:24.917 に答える