SequelizeでDBのmigrationをする場合、sequelize-cliを利用するのが一般的だと思いますが、モジュールのデプロイ時(アプリケーション起動時)にmodel.sync()でカラム追加(ALTER TABLE)出来ないかなぁって思ってSequelizeのソースを眺めてたところやり方を見付けたのでメモがてら。
ちなみに、sync({force: true})だとdrop/createなのでデータが消えるためここでは無し。
以下のようにsync()のオプションにalter: trueを渡せばよい。
'use strict';
const Sequelize = require('sequelize');
const sequelize = new Sequelize(......);
sequelize
.sync({force: false, alter: true})
.then(....)
.catch(....);
この方法だとsequelize.define()しているカラム全てに対してALTER TABLEが実行される事になり、sequelize.define()から削除されたカラムもdropされます。
また、この方法だとテーブルの最後にカラムが追加されるので、カラム順番を気にするような場合は素直にsequelize-cliを使いましょう。