今回の記事では、node.jsとpostgresで文字返すだけのHTTPサーバを立ててみようと思います。
普段はMySQL勢だったりするのですが……
Postgresは
- Herokuの標準
- 7つのデータベース 7つの世界で最初の項で取り上げられてる
と、前々から気にはなっていたのでお勉強がてら採用ということになりました。
前提環境
- OS X 10.10(Yosemite)
- homebrew
- postgres (PostgreSQL) 9.4.1
- node v0.12.0
...なんか、最新でないような気がしますが無視します。
実際のところ
postgres
あらかじめ、
$ pg_ctl -D /usr/local/var/postgres -l ~/postgres.log start $ createdb sampledb $ psql sampledb
てな感じで、postgresを走らせsampledbを作成、ログインしておきます。
その後、
CREATE TABLE user1 (name TEXT, val INTEGER); insert into user1 values ('shuzo', 1); insert into user1 values ('vivit', 2);
などといった感じで模擬データを突っ込みます。
node.js
データの準備が終わったら作業ディレクトリで
$ npm install pg
と、postgresのライブラリを突っ込んでおきます。
あとは、本体を以下のように記述して
var pg = require('pg'); var conString = "postgres://USERNAME:PASSWORD@localhost/SAMPLEDB"; var resultName = ""; var client = new pg.Client(conString); client.connect(function(err) { if(err) { return console.error('could not connect to postgres', err); } client.query('select name from user1;', function(err, result) { if(err) { return console.error('error running query', err); } console.log(result.rows[0].name); console.log(result.rows[1].name); resultName = result.rows[0].name; client.end(); }); }); var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(resultName); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
コマンドを叩き、http://127.0.0.1:1337/を見るだけ。
$ node sample.js
案外、楽にできました。