ゼットログ

よしなしごとを記す

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を試してみよう。