関連ページ
モデルと migration の作り方
- sequelize は migration をサポートしています
- そのため、モデル作成時に models ディレクトリにファイルを足すのではなく、
sequelize-cli
を使って、model 作成と同時に migration を作るようにしましょう npm run sequelize
を実行するためにはnpx
コマンドが必要です。npm コマンドのバージョンが 5.2 以上なら使えます- それぞれ、migration を作成した後に
npm run db:migrate
を実行すると DB に反映できます
Sequelize のモデルと migration に関する情報の調べ方
- migration チュートリアル
- sequelize-cli の README.md (Documentation のところが割と分かりやすい)
- 実のところ queryInterface というものを使っているに過ぎないので、メソッド一覧はこちら
関連無しのモデルを作成
-
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 }); } };