[node] JavaScriptでSQLを実行する方法!

nodeを使って、SQLを実行し、結果のjsonを使っていい感じにデータを取る方法について紹介します!

Nodeをインストール

下のリンクを参考にnode.jsをインストールしましょう!

【Node.js入門】各OS別のインストール方法まとめ(Windows,Mac,Linux…

このコマンドを実行して、バージョンが表示されば導入できています。

node -v

MySQLに接続

ローカルに立てたMySQLサーバーにつなぐらならそこまで難しくないですが、ssh接続が必要ならちょっと面倒です。

ここではssh接続が必要なケースでのMySQLサーバーに接続する方法について見ていきましょう!

コードはこのようになります!

var mysql = require('mysql2');
var Client = require('ssh2').Client;

var ssh = new Client();
ssh.on('ready', function() {
  ssh.forwardOut(
    // 送信元アドレス。これは通常、任意の有効なアドレスです。(基本的にこのままでOK)
    '127.0.0.1',
    // 送信元ポート。これは任意の有効なポート番号です。(基本的にこのままでOK)
    12345,
    // 宛先アドレス(localhostはSSHサーバーを指します)
    'mysql-host',
    // 宛先ポート
    3306,
    function (err, stream) {
        if (err) {
            console.error('forwardOut Error: ' + err);
            return;
        }
        console.log('forwardOut: ready!');
      var connection = mysql.createConnection({
        host: 'mysql-host',
        user: 'username',
        password : '●●●●●●●●●●●●●●●●●', 
        database: 'dbName',
        stream: stream // <--- this is the important part
      });
    // use sql connection as usual
    connection.connect();
    // usersというテーブルから5レコード取得
    connection.query('SELECT * from users LIMIT 5', function (err, result) {
        if (err) { console.log('err: ' + err); } 
    
        console.log(result);
        connection.end();
    });
  });
}).connect({
  // ssh connection config ...
  host: 'sshHost',
  port: sshPort,
  username: 'sshName',
  privateKey: require('fs').readFileSync('/Users/<NAME>/.ssh/id_rsa'),
  passphrase:'●●●●●●●●●●●●●●●●●'
});

それぞれ、mysql-hostなどの変数は、すでにssh接続している、下のSequel proなどツールからコピペしてください 〜

npmモジュールのインストール

npm install --save mysql2 ssh2

上のコマンドを実行して、mysql2とssh2を導入します・

変数を適宜変更し、接続ができたら、サンプルコードのsqlをselect文を修正し、しっかりデータが取れるか確認して見ましょう!

jsonでSQLの結果が返ってくるから、結果が扱いやすく便利です!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする