Sequelize + MySQL

インストール
npm init した上で、パッケージをインストールする。
$ npm install sequelize --save
$ npm install mysql2 --saveコマンドもインストールしておく。
$ npm install -g sequelize-cli設定ファイルの編集
必要なディレクトリ config/, migration/, model/, seeders/ を作成する。
$ sequelize initDB 接続のための設定ファイル config/config.json を編集する。
{
  "development": {
    "username": "root",
    "password": "root",  // パスワード: "root" に変更
    "database": "database_development",  // 適当なDB名
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": "root",
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": "root",
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}
Model の作成
config.json の設定を元に、DB を作成する。
$ sequelize db:create以下で、models/user.js と migrations/$(実行時刻)-user.js が作成する。
$ sequelize model:create --underscored --name User --attributes "column1:string,clomun2:string"'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class User extends Model {
    static associate(models) {
    }
  };
  User.init({
    column1: DataTypes.STRING,
    column2: DataTypes.STRING,
  }, {
    sequelize,
    modelName: 'User',
    underscored: true,
  });
  return Logic;
};
'use strict';
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('User', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      column1: {
        type: Sequelize.STRING
      },
      column2: {
        type: Sequelize.STRING
      },
      created_at: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updated_at: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('User');
  }
};
migration ファイルを元に、DB に Model(テーブル)を作成する。
$ sequelize db:migrate --env development  // --env で環境を指定可能その他の操作。
$ sequelize db:migrate:status   // migration ファイルの一覧表示
$ sequelize db:migrate:undo --name <migration name>   // 元に戻すDB 操作
DB への INSERT、SELECT のクエリを以下で実現できる。
const router = require("express").Router();
const db = require('../models');
router.get('/seq', (req, res) => {
	// データ追加
	db.User.create({
		column1: "aaa",
		column2: "bbb",
		created_at: new Date(),
		updated_at: new Date()
	});
	// 全件データ取得
	db.User.findAll().then(users => {
		res.send(users);
	});
	// 特定のデータ取得
	db.User.findOne({ where: {id: 1} }).then(user => {
		res.send(user);
	});
});
module.exports = router;