expressでpostでundefined

console.logでpostしたデータを確認しようとすると、
undefinedとなってしまうのがなかなか解決しなかった。
にわか知識ではつらい。。。


環境:
Mac OS X 10.6.7
node.js 0.4.8
express 2.3.7


とりあえず、このあたりを参考に:
node.js+expressでPOSTパラメーターを取得する方法 ::ハブろぐ
HugeDomains.com - HideYukiSaito.com is for sale (Hide Yuki Saito)


html(index.htmlという名前で)のform部分はこんな感じ:

<form action="/" method="post">
	<input type="text" name="user[name]" />
	<input type="submit" value="送信" />
</form>


で、server.jsというファイルを用意して(元ネタは前の記事を参照)、
postの部分は以下のような感じ:

app.use(express.bodyParser());
app.post('/', function(req, res){
	console.log(req.body);
	res.redirect('back');
});


res.redirect('back');
がないと、ブラウザでレスポンスが返ってこなかった。。。


ターミナルを起動して、server.jsを実行。

$ node server.js
(以下が表示、されるようにconsole.logを書いておく。)
Server running at http://127.0.0.1:8124/


ブラウザで、
http://127.0.0.1:8124/
にアクセスし、postしてみると、ターミナルに、

undefined

と表示される。


ググッてみると、
bodyParserがないから、というのがヒットするけど、あるんだけどね。。。


で、
HugeDomains.com - HideYukiSaito.com is for sale (Hide Yuki Saito)
を見直して、
bodyParser()をconfigureで指定したところ、postした中身が表示された。


修正したserver.jsは以下。

// モジュールの読み込み
var express = require('express');

// サーバーを作成
var app = express.createServer();

// configure
app.configure(function() {
	app.use(express.bodyParser());
});

// '/'のリクエストハンドラ
app.get('/', function(req, res) {
	res.sendfile('index.html');
});

// post
app.post('/', function(req, res) {
	console.log(req.body);
	res.redirect('back');
});

// サーバーを起動
app.listen(8124, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8124/');


で、「おれ」とか入力してpostすると、
ターミナルに以下のように表示された。

{ user: { name: 'おれ' } }