読者です 読者をやめる 読者になる 読者になる

漆黒な技術メモ

管理人が必要に応じて自分のメモを好き勝手に投下するたまり場的ブログ

【ちょっと技術的なことAdventCalender】 hackU実装振り返り-3. nodejsでpostgresに接続-

この記事はちょっと技術的なことAdventCalenderの24日目です。
クリスマスに風邪をこじらせてしまい書くのが遅れました…

先週あたりからhackU開発後記としてつらつら書いていますが、今日は可視化システムで必要だったnodejsとDBの連携についてお話ししようと思います。

nodejs×postgreSQL

恐らく座布団が定期的に送ってくるデータをため込んで可視化する…という作業にはNoSQLであるmongoDBとかの方がパフォーマンス的には正しい選択肢なのですが、 今回は開発時間をあまりとれなかったので、早めにシステムを組み上げるため研究室内での運用実績が多いpostgresを利用しました。
nodejsからpostgresを利用するにはpgというパッケージを利用します。いつものように$npm install pgでインストールします。
パッケージがインストールできたらあとはコードを書くだけです。

記述コード

ここでは、引数で渡された任意のsql文を実行し、結果をコンソールに出力するというプログラムを紹介します。

var pg = require('pg');
var DBhost = "postgres://username:password3@www.example.jp:5432/dbname";

sql_custom = function (query,socket) {
    var result;
    var client = new pg.Client(DBhost);
    client.connect(function (err) {
        if (err) throw err;
        client.query(query, function (err, value) {
            if (err) throw err;
            console.log("get data");
            console.log(value);
            client_select.end();
        });
    });
});

pg.Client型の変数を使いまわして2回以上接続切断を行うと例外を吐いて止まってしまったので、毎回接続前に新しいインスタンスを生成して 局所変数として扱うのが一番よさそうです。
このコードでも何回も接続と切断を繰り返すと”too many clients”的なエラーが出てしまうので、少しこの部分は改良の余地がありそうですが…
今日はここまで!ありがとうございました。