Node.jsのフレームワークExpress.jsとMysqlを使ったCRUDアプリケーションの作成

Node.jsのフレームワークExpressを使い、Mysqlを使ったCRUDアプリケーションの作成を行う。また、テンプレートエンジンとしてEJSを利用する。

目次

1.本稿の実行環境
(1)ホストOS
 Windows 10 Pro
(2)仮想環境(VirtualBox)
 ・ゲストOS:CentOs8(Red Hat 64-bit)
 ・nodejs、及びnpmはインストール済
 # node -v
 v10.24.0
 # npm –version
 6.14.11

2.CRUDアプリケーションの概要
(1)データベース
・データベース名:crud_db
・テーブル(users)

(2)画面

3.開発環境作成
 WebフレームワークExpressとテンプレートエンジンEJS、およびデータベースMysqlによるアプリケーションの開発環境を作成する。
(1)Express.jsのインストール
・ディレクトリを任意の名前で作成
ここでは、”crud-app”とした。
・パッケージ情報の作成
 作成したディレクトリに移動して、パッケージ情報を作成する。
 # cd crud-app
 # npm init -y
 package.jsonファイルが作成される
・express.jsのインストール
 # npm install express

(2)テンプレートエンジンEJSのインストール
 $ npm install ejs

(3)MySQL接続ドライバのインストール
 express.jsからMySQLへ接続するためのドライバをインストールする。
 # npm install mysql

(4)データベースとテーブルの準備
データベース(crud_db)とテーブル(users)を作成する。
・Mysqlに接続
# mysql -u root -p
・データベースの作成
mysql> CREATE DATABASE crud_db;
・テーブルの作成mysql> CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL);
・テーブルのフィールドの確認mysql> SHOW COLUMNS FROM users;
・テーブルが作成されたことを確認する

4.CRUDアプリケーションの作成
(1)nodejsアプリ
crud_app.js

(解説)
・const express = require(‘express’);
require()でモジュール(オブジェクト)を呼び出す
・const app = express();
 express()オブジェクトを作成する
・app.use(express.urlencoded({extended: false}));
 urlencoded()メソッドでフォームデータを読めるようにする
・app.get(‘/new’, function (req, res) {
・・・})
 get受信時のルーティングとコールバック関数を定義する。
・connection.query(sql,コールバック関数)
 queryメソッドのコールバック関数は第一引数にクエリを文字列で指定、第二引数にはコールバック関数を指定する。
 コールバック関数ではerror, results, fieldsの引数を用いることができ、errorにはクエリ実行時のエラー、resultsにはクエリ実行後の結果、fileldsにはクエリの結果のフィールドの情報が入る。
connection.query(
‘SELECT * FROM users’,
(error, results,fields ) => {
console.log(results);
resultsの内容は、
[ RowDataPacket { id: 10, name: ‘test1’, email: ‘test1@test1.com’ },
RowDataPacket { id: 11, name: ‘test2’, email: ‘test2@test2.com’ } ]
・res.render(‘index.ejs’, {items: results})
使用するテンプレートファイルの指定とテンプレートファイルに渡すデータを{キー値: ‘渡す値’}で指定する。
 テンプレートの”index.ejs”内では<%= キー値 %>と記述することでデータを埋め込むことができる。

(2)テンプレートファイル
views/menu.ejs

views/index.ejs

views/new.ejs

views/edit.ejs

5.アプリケーションの実行
(1)Mysqlサーバの起動
 # service mysqld start
(2)nodeアプリケーションの実行
 crud_app.jsのディレクトリで下記コマンドを実行
 # node crud_app.js
(3)ブラウザからnodeのWebサーバに接続   http://127.0.0.1:3000/

The end