Node.js(express)+sequelize(MySQL)の環境構築とDB接続
どうも!ヒグッティです!今回はNode.js(express)とsequelizeが使えるように環境構築をしたいと思います。ゆくゆくはチケット予約のWebアプリ的なものを作成していきたいと思います。DBはMySQLを利用します。Node.jsは触ったことがなかったので、今更ですが勉強していきます!!
最近、teamLabに行ってきたのですが、チケット予約サイトを見て、Node.jsの勉強がてら、チケット予約サイトを作ろうと思いました。
目次
本記事の内容
Node.js(express)とsequelizeを開発する上での環境構築方法とDBへの接続方法について記載します。
これからNode.jsを学習したい人は是非参考にしてください。
念のため、express、sequelizeの公式サイトも参考にしてください。
expressの公式サイト sequelizeの公式サイト前提
基本的に自分のPC環境で実行します。諸々のバージョンは以下です。Node.jsとMySQLのインストール手順は割愛します。
- Windows10
- MySQL 8.0.11
- Node.js v14.18.0
Node.js(express)の準備
Node.js(以下、express)の準備をします。以下の順番で実施します。
- 任意のホームディレクトリを作成
- expressをインストール
- 動作確認
1で任意のディレクトリ(今回はticket)を作成し移動します。
mkdir ticket
cd ticket
2でexpressをインストールします。
npm init -y
npm install express
npm install nodemon
app.jsの作成。以下、サンプルコードです。
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000)
3で以下のコマンドを実施後、「http://localhost:3000/」にアクセスし画面にHello World!と表示されていることを確認してください。
npx nodemon app.js
expressの準備は完了!
sequelizeをインストールしていきます。以下のコマンドを実施。
sequelizeの準備
以下のコマンドを実行しインストールします。
npm install –save sequelize
npm install -g sequelize-cli
npm install –save mysql2
npx sequelize-cli init
インストールが終わったら各設定を見ていきます。
config.jsonの準備
ticket/config/config.jsonを編集します。DBの接続情報を記載してください。
今回はdevelopmentのみを利用します。各環境に応じてDBのユーザ名やパスワードは適宜入力してください。
{
"development": {
"username": "root",
"password": null,
"database": "database_deve",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
テーブルの作成
以下のコマンドを実行しテーブル作成のひな型ファイルを作成します。今回はUsersという名前でテーブルを作成します。
npx sequelize-cli model:generate –name Users –attributes name:string,email:string
コマンド実行後、「ticket/models/users.js」が作成されているはずです。
以下のコマンドを実行しテーブルを作成します。
npx sequelize-cli db:migrate –env development
DBを確認しusersテーブルが作成できているはずです。テーブルを確認できたらsequelizeの準備は完了です!
expressからテーブルへCRUDをしてみる
先ほど作成したusersテーブルへexpressから操作できることを確認してみます。ticket/app.jsを以下に書き換えます。
const express = require('express')
const User = require('./models').Users;
const app = express()
app.get('/', (req, res) => res.send('Hello World!'));
//登録
app.get('/regist', (req, res) => {
User.create({ name: 'testuser', email: 'test@test.com' }).then(user => {
res.send('regist complete! ' + user.name + ' ' + user.email);
});
});
//更新
app.get('/update', (req, res) => {
User.update({ name: 'testuser', email: 'testupdate@test.com' },{where:{}}).then(user => {
res.send('update complete! ');
});
});
//削除 all delete
app.get('/alldel', (req, res) => {
User.destroy({where: {
}});
res.send('delete complete! ');
});
//検索
app.get('/search', (req, res) => {
User.findAll().then(users => {
res.send(users);
});
});
app.listen(3000)
「const User = require('./models’).Users;」でusersテーブルのmodelを生成します。
あとは以下のように記述しCRUDできることを確認します。今回は検索条件などは追加していません。
- 検索 User.destroy({where: {}});
- 登録 User.create({ name: 'testuser’, email: 'test@test.com’ }).then()
- 更新 User.update({ name: 'testuser’, email: 'testupdate@test.com’ },{where:{}}).then()
- 削除 User.destroy({where: {}});
これでCRUDの確認ができました!
まとめ
環境構築からDB接続までできました。始めてから2時間くらいでDB確認ができました。javaのspringbootなどに比べるとsequelizeでのDB接続は直観でわかりやすいです。小規模のWebアプリ作成などに向いていそうですね。大規模システムはできるのかな?今後勉強していきます。次はアプリっぽいものを作成していこうかなー
- npmでインストールするだけだから構築は簡単
- sequelizeによりSQL文を記述しなくてよい、使い方は他のORMと似たような感じなのでORMの経験があれば学習コストは低い。
その他
もしよかったら過去にVueのサンプルアプリを作った記事が良かったら見ていってください。
【Vue.js3】Web初心者がVuexでアンケートアプリを作ってみた!