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.jsとuser.jsが自動で作成されます。
- example
- models
- init-models.js
- user.js
- node_modules
- app.js
- package-lock.json
- package.json
- models
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