📑

node.js x Express.js x MySQL でDBにデータを挿入してみる

2022/07/28に公開

目次

1.やりたいこと
2.環境
3.ルーティング設定(サーバー側)
4.パラメータの受取(サーバー側)
5.DBの接続設定(サーバー側)
6.SQL処理(サーバー側)
7.リクエスト(クライアント側)
8.疎通確認

1.やりたいこと

今回やりたい概要は以下になります。
・簡単なapiを作成し、リクエストパラメータの値をDBに登録する。
具体的には以下の操作を行います
①リクエストのルーティング(/apiRegistへのリクエスト)
②処理内でのパラメータの受取(リクエストパラメータuser_nameの値)
③処理内でのDBの接続(MySQLへの接続設定)
④処理内でのパラメータのインサート(SQLでの挿入)

2.環境

OS:Windows10
VisualStudio:VisualStudio2022
MySQL:10.4.24-MariaDB
Node.js:v16.13.2

3.ルーティング設定(サーバー側)

(事前準備としてroutes/apiRegist.jsが作成されていること)
ホスト名/apiRegistにリクエストが来た際に,apiRegistの処理を呼び出す設定にしています。
(今回はローカルなので、http:localhost:3000/apiRegist がURLになります。3000はサーバーのポート番号です。)

app.js
// ルート定義
var apiRegist = require('./routes/apiRegist');
// JSの呼び出し
app.use('/apiRegist', apiRegist);

4.パラメータの受取(サーバー側)

req.bodyにリクエストパラメータに関する情報が格納されており、user_nameで値を取得します。

apiRegist.js
    // パラメータの格納
    const parameterUserName = req.body.user_name;

5.DBの接続設定(サーバー側))

接続前にDBに接続するための各種設定情報を記載していきます。(user名、passwordはDBからご確認ください)

※事前準備として下記の準備をしておきましょう。
DBの作成:test_db
テーブルの作成:test_table(id列(auto_increment)、user_name列)

apiRegist.js
    //DB接続設定
    const mysql = require('mysql')
    const connection = mysql.createConnection({
        host: 'localhost',
        user: 'xxxxxx',
        password: 'xxxxxx',
        database: 'test_db'
    })

6.SQL処理(サーバー側)

パラメータが可変になりますので、?に「4.パラメータの受取」で取得したparameterUserNameをuser_name列に格納するSQL文としています。
(err, rows, fields) ~はコールバック関数です。
今回はjson形式で返却する様にしています。
成功した際、エラーが起きた際の処理も記載しておきましょう。

apiRegist.js
    // SQL文の定義
    const sql = 'INSERT INTO `test_table` VALUES (null, ?)'
  // DB接続開始
    connection.connect()
    // SQL処理実行
    connection.query(sql, parameterUserName, (err, rows, fields) => {
        res.header(`Content-Type`, `application/json; charset=utf-8`);
        if (err) {
	//エラーの場合
            console.log(err.message);
            res.status(500).json({
                status: 'failed',
            })
        } else {
	// 成功の場合
            res.status(200).json({
                status: 'success',
            })
        }
    })
    // DB接続の終了
    connection.end()
});
module.exports = router;

7.リクエスト(クライアント側)

リクエスト設定は以下になります。
METHOD:POST
URL:http://localhost:3000/apiRegist
HEADER
 Content-Type:application/x-www-form-urlencoded
BODY
 user_name:aaaaa

8.疎通確認

実行結果
| id | user_name |
| 1 | aaaaa |

最後に

今回は簡単な挿入文でしたが、SQL文を変更すればCRUD操作はどれもできるかと思います。
ご覧いただきありがとうございました。

Discussion