関連ページ

モデルと migration の作り方

  • sequelize は migration をサポートしています
  • そのため、モデル作成時に models ディレクトリにファイルを足すのではなく、 sequelize-cli を使って、model 作成と同時に migration を作るようにしましょう
  • npm run sequelize を実行するためには npx コマンドが必要です。npm コマンドのバージョンが 5.2 以上なら使えます
  • それぞれ、migration を作成した後に npm run db:migrate を実行すると DB に反映できます

Sequelize のモデルと migration に関する情報の調べ方

関連無しのモデルを作成

  • attribute が firstName,lastName,createdAt,updatedAt を持つ Hoge モデルを作成する

    $ npm run sequelize -- model:generate --name Hoge --attributes firstName:string,lastName:string,email:string,createdAt:date,updatedAt

カラムを追加する migration を作成

  • migration を生成するコマンドを実行

    $ npm run sequelize -- migration:generate --name (分かりやすい名前)
  • 生成された migration を以下のようなフォーマットで書く (addColumn というメソッドがポイント)

    • 内容は適宜変更
    'use strict'; module.exports = { up: function (queryInterface, Sequelize) { return queryInterface.addColumn('tableName', 'columnName', { type: Sequelize.INTEGER, defaultValue: 0 }); }, down: function (queryInterface, Sequelize) { return queryInterface.removeColumn('tableName', 'columnName'); } };

addColumnについての参考URL external_link

カラムを変更する migration を作成

  • migration を生成するコマンドを実行

    $ npm run sequelize -- migration:generate --name (分かりやすい名前)
  • 生成された migration を以下のようなフォーマットで書く(changeColumnというメソッドがポイント

    • 内容は適宜変更
    'use strict'; module.exports = { up: function (queryInterface, Sequelize) { return queryInterface.changeColumn('tableName', 'columnName', { type: Sequelize.STRING, allowNull: true }); }, down: function (queryInterface, Sequelize) { return queryInterface.changeColumn('tableName', 'columnName', { type: Sequelize.STRING, allowNull: false }); } };