ここからはじめる sequelize - Node.js

  • 作成日:
  • 最終更新日:2025/08/02

sequlize のインストール

Node.js の ORM (Object-Relational Mapping)ライブラリである sequelize(シーケライズ) をインストールするには以下のコマンドを実行します。

npm install sequelize

Sequelize をコマンドラインで操作するには、sequelize-cli をインストールします。以下のような機能があります。

  • マイグレーション
  • シーディング
  • モデル生成

sequelize-cli をインストールするには、以下のコマンドを実行します。

npm install sequelize-cli

MariaDB を利用する準備をする

MariaDB は、あらかじめインストールされているものとします。

Node.js に mysql2 のライブラリをインストールするには、以下のコマンドを実行します。

npm install mysql2

データベースとテーブルを作成します。

# データベースの作成
CREATE DATABASE sample;

# テーブルの作成
CREATE TABLE user (id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, age INT NULL, PRIMARY KEY (id));

コマンドラインから実行しデータを取得する

簡単にデータベースに接続し、データを取得してみます。

const { Sequelize, DataTypes } = require('sequelize');

// データベース接続情報
const sequelize = new Sequelize('sequelize', 'root', 'password', {
  host: 'localhost',
  dialect: 'mysql',
  logging: false
});

// モデル定義(例:users テーブル)
const User = sequelize.define('User', {
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true
  },
    name: DataTypes.STRING,
    age: DataTypes.INTEGER
  }, {
    tableName: 'user',
    timestamps: false // createdAt, updatedAt がなければ
});

(async () => {
  try {
    await sequelize.authenticate();
    console.log('DB接続成功');

    const users = await User.findAll();
    console.log('データ取得結果:');
    users.forEach(user => {
      console.log(user.toJSON());
    });

    await sequelize.close();
    console.log('接続を閉じました');
  } catch (err) {
    console.error('エラー:', err);
    process.exit(1);
  }
})();

データベースの接続情報の基本は以下のようにします。

const sequelize = new Sequelize('データベース名', 'ユーザー名', 'パスワード', {
  host: 'localhost',
  dialect: 'mysql', // 他に 'postgres', 'sqlite', 'mssql' など
});

データベース接続情報のオプションの「 logging 」を false にするとログを非表示にします。

sequelize.authenticate()は、データベースに接続できるか確認するメソッドです。

sequelize.close()は、接続(コネクションプール)を終了・破棄するメソッドです。

既存のデータベースからモデルを作成する

既存のデータベースからモデルを自動生成するには、sequelize-autoを使うことで作成することができます。

sequelize-auto をインストールするには、以下のコマンドを実行します。

npm install sequelize-auto

モデルを作成するには、以下のコマンドを実行します。

npx sequelize-auto -h <host> -d <database> -u <user> -x <password> -p <port> -o ./models -l ts
オプション 内容
-h データベースのホスト名
-d データベース名
-u ユーザー名
-x パスワード
-p ポート番号
-o 出力先のディレクトリ
-l 出力する言語(ts はTypeScript)

※ -o を省略すると、「 models 」ディレクトリが作成され、その中にモデルが作成されます。

実際にsequelize-atuoを利用してモデルを作成し、接続してみます。

以下のコマンドを実行します。

npx sequelize-auto -d sequelize -h localhost -u root -p 3306 -x password -e mysql

ディレクトリ構造は、以下のようになります。sequelize-autoでモデルを作成するとiniti-models.jsuser.jsが自動で作成されます。

  • example
    • models
      • init-models.js
      • user.js
    • node_modules
    • app.js
    • package-lock.json
    • package.json

app.jsを作成し、以下のようにファイルを編集します。

const { Sequelize, DataTypes } = require('sequelize');

// データベース接続情報
const config = {
  database: 'sequelize',
  username: 'root',
  password: 'password',
  host: 'localhost',
  dialect: 'mysql'
};

const sequelize = new Sequelize(config);

const initModels = require('./models/init-models');
const models = initModels(sequelize);
const User = models.user;

(async () => {
  try {
    await sequelize.authenticate();
    console.log('DB接続成功');

    const users = await User.findAll();
    console.log('データ取得結果:');
    users.forEach(user => {
      console.log(user.toJSON());
    });

    await sequelize.close();
    console.log('接続を閉じました');
  } catch (err) {
    console.error('エラー:', err);
    process.exit(1);
  }
})();

コマンドプロンプトから以下を実行し、データが取得されるか確認します。

node app.js