以前バイト先でNode.jsを扱っていたので、忘れないようにNode.jsでMySQLに接続する方法を備忘録として残そうと思います。
今回のソースコードではローカルのDBに接続しています。
開発環境
- macOS Mojave バージョン10.14.4
- Node.js v11.6.0
- npm 6.8.0
ディレクトリ構造
NodeTest/
├ app.js
├ mysqlConnection.js
├ package-lock.json
├ package.json
モジュールのインストール
$npm install mysql
DBを定義
mysqlConnection.js
//mysqlモジュールを呼び出します
var mysql = require('mysql');
//DBの定義
var dbConfig = {
host : 'localhost', //接続先ホスト
user : 'root', //ユーザー名
password : '', //パスワード
database : 'test' //DB名
};
var connection;
function handleDisconnect() {
console.log('create mysql connection');
connection = mysql.createConnection(dbConfig); //接続する準備
//接続
connection.connect(function(err) {
if(err) {
console.log('error when connecting to db:', err);
setTimeout(handleDisconnect, 2000); //2秒待ってから処理
}
});
//error時の処理
connection.on('error', function(err) {
console.log('db error', err);
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
handleDisconnect();
} else {
throw err;
}
});
module.exports = connection; //connectionを(他のファイルから)requireで呼び出せるようにする
}
handleDisconnect();
クエリの実行, HTTP接続
app.js
//モジュールを読み込む
var http = require('http');
var express = require('express');
var app = express();
var mysql = require('mysql');
//mysqlConnection.jsで作成したconnectionを呼び出す
var connection = require('./mysqlConnection');
//サーバー作成
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
res.write('Hello Ryu1!');
res.end();
});
//クエリ作成
app.get('/', function (req, res) {
console.log("dbの内容を取り出す");
//クエリ文
connection.query('select name from testTable where id = 0', function (error, results, fields) {
if (error) throw error; //errorの場合
res.send(results);//画面にresponseとして表示
console.log("results: " + results[0].name); //jsonで受け取った場合の値の取得方法
});
});
//サーバー起動。listen()メソッドを実行して3000番ポートで待ち受けする。
app.listen(3000, function () {
console.log('listening on port 3000');
});
最後に
次回はAzureのAzure Database for MySQLを試して記事にしてみたいと思います。
最後まで読んでくださってありがとうございます。