node.js で PostgreSQL に接続する (Windows で npm 無しで)

そろそろ WSH にも疲れてきたので。。

サービスは C# on Visual Studio での開発ですが、ガッツリ開発からは離れた事もありワンショットのバッチやちょっとしたツールを作る事が多くなりました。
その中でいちいち C# で書いてビルドしてってもは何かと面倒くさいので WHSJavaScript で使ってたりしてたんですが、やっぱりいろいろしんどい。

そんな中、Node.js が正式に windows バイナリを提供ということなので使ってみようかなと。

Node.js のインスール

ダウンロード

node.exe Windows executable というのがあるので、適当に最新版を取ってきましょう。
本家サイト

Windows 版には nvm は無いのでバージョンごとに普通に配置するだけです。

バスを通す

たぶん通した方が楽です。

実行してみる
> node -v
v0.5.1

大丈夫そうですね。
node とだけ打つと対話モードになりますので練習用に。

PostreSQL を使えるようにする。

macLinux だと npm 使ってどんって感じですが Windows 版にはまだ npm はありません。なので以下参考リンクにもあるように普通に展開する必要があります。

libpq-dev

要は libpq があればいいということだと思うので pgAdmin ? に入っているものでOKとしました。

node-postgres

探してるとフォークされたものやら名前違いがあって少しハマりました。。

  1. brianc / node-postgres - github
  2. ry / node_postgres - github

1. が今回使用するもの。2 は名前違いなのですが、使えるのではないかと思われるもの。今回は使用しません。

node-postgres の展開

node.exe と同階層に展開します。フォルダ名は npm でインスールされる時と同様に「pg」にします。以下のような構成になります。

/
 + node.exe
 + pg
   + Makefile
   + package.json
   + README.md
   + wscript
   + lib/
   + ...
簡単に呼べるようにする

上記のままでもいいのですが、このままだと

var pg = require('pg/lib'); 

のようになってしまいます。
ちょっと格好悪いので pg の直下に以下を配置します。

index.js

module.exports = require('./lib');

node-postgres は lib の直下に index.js があるので上記で十分です。

さあ、これでインスールは完了です。

使ってみる

かなりふわっとしたコードですが、環境に合わせて埋めてください><
sample.js

var pg = require('pg');

var connectionString = "tcp://username:pasword@ipaddress:port/dbname";
pg.connect(connectionString, function(err, client) {
  client.query("SELECT * from sample_table", function(err, result) {
    console.log("Row count: " + result.rows.length);  // 1
    console.log("column_name: " + result.rows[0].column_name);
  });
});

繋がりましたね!

トランザクションはどうするんだろ?

という疑問は残りました。

また次回。