node.js x Express.js x MySQL でDBにデータを挿入してみる
目次
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はサーバーのポート番号です。)
// ルート定義
var apiRegist = require('./routes/apiRegist');
// JSの呼び出し
app.use('/apiRegist', apiRegist);
4.パラメータの受取(サーバー側)
req.bodyにリクエストパラメータに関する情報が格納されており、user_nameで値を取得します。
// パラメータの格納
const parameterUserName = req.body.user_name;
5.DBの接続設定(サーバー側))
接続前にDBに接続するための各種設定情報を記載していきます。(user名、passwordはDBからご確認ください)
※事前準備として下記の準備をしておきましょう。
DBの作成:test_db
テーブルの作成:test_table(id列(auto_increment)、user_name列)
//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形式で返却する様にしています。
成功した際、エラーが起きた際の処理も記載しておきましょう。
// 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