showとlist(1)
CouchDBからデータを取得するとJSON形式で返ってきますが、showとlistを使うことでデータをお好みの体裁に整えて表示させることができる模様。以下のようなデータを用意して、showというデザインドキュメントを試してみた。
{ "_id": "game01", "_rev": "3-894911421", //ここは指定しない "title": "桃太郎伝説", "genre": "RPG", "diffculty": 3, "save": "セーブはパスワード形式または天の声2" }
デザインドキュメントを次のように用意。
{ "_id": "_design/showdoc", "_rev": "14-2162086442", //ここは指定しない "language": "javascript", "show_detail": "(function (doc, req) { if (doc) {return \"<html><head><title>\" + doc.title + \"</title></head><body>\\n\" + \"タイトル: \" + doc.title + \"<br>\\n\" + \"ジャンル: \" + doc.genre + \"<br>\\n\" + \"難易度: \" + doc.diffculty+ \"<br>\\n\" + \"セーブ形式: \" + doc.save + \"\\n</body></html>\";} else {if (req.docId) {return \"New Document\";} else {return \"Empty\";}}})" }
ブラウザのアドレスバーに以下のように入力。
http://hostname:5984/db_name/_design/showdoc/_show/show_detail/game01 (show_detailという関数にgame01というドキュメントを引き渡しているようなイメージ)
するとこんな感じで返ってきた。
<html><head><title>桃太郎伝説</title></head><body> タイトル: 桃太郎伝説<br> ジャンル: RPG<br> 難易度: 3<br> セーブ形式: セーブはパスワード形式または天の声2 </body></html>
これは便利。CouchDB単体でデータから動的にページを生成できますな。Javascriptを知っていればそれで事足りてしまう。
ひとつのドキュメントを指定して表示させるときにはshowを使うとよいようだ。
そして、複数のドキュメントから一覧を作るような場合はlistを使うといいらしい。次はlistを試してみよう。