【ちょっと技術的なこと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”的なエラーが出てしまうので、少しこの部分は改良の余地がありそうですが…
今日はここまで!ありがとうございました。