2011-10-27 10 views
2

私は現在、CouchDBのビュー機能とショー機能の違いについて少し苦労しています。私はカール経由でCouchDBを照会するためにCodeIgniterを使用しています。 _design文書には添付のテンプレートはありません。各テンプレートは、CIのビューメソッドを介してプレーンHTMLとしてロードされます。 Mustache.jsの助けを借りて、私はMustacheの擬似変数を利用できるようにしたいと考えています。CouchDBビューを表示するか、デザインドキュメントに表示しますか?

ドキュメントからわかるように、ビューの結果は常にkey:valueのペアで表示されます。

私はこのような何かを行うことができるようになるのは、口ひげの方法論に続いhttp://127.0.0.1:5984/blog/_design/entries/_view/all

{"total_rows":2,"offset":0,"rows":[ 
{"key":"56a13b96ea3492ef8c7e554f67000952","value":{title:"First post"}}, 
{"key":"56a13b96ea3492ef8c7e554f670015a9","value":{title:"Second post"}} 
]} 

から、私は次の結果を持っているとしましょう:

{{#rows}} 
    <div class="entry"> 
    <h1>{{#value}}{{title}}{{/value}}</h1> 
    </div> 
{{/rows}} 

これは許容可能であるが、私はむしろのような何かをするだろうこの:

{{#entries}} 
    <div class="entry"> 
    <h1>{{title}}</h1> 
    </div> 
{{/entries}} 

oこれは何ですか?ビュー機能で変更する必要があるものがあるのですか、これは単にビュー機能ではできないものでしょうか?ここにショー機能が必要ですか?はいの場合、作成する最も簡単な方法は何ですか?質問、質問、質問...

答えて

1

私が正しく理解していれば、CodeIgniterからCouchDBを呼び出して、JSONの代わりにHTMLを受け取ることができます。最初に私はなぜそれをしたいのか分かりません。なぜなら、あなたは既にPHPを持っていて、それを自由に使えるからです。 CouchDB内のテンプレートは、ほとんどが直接そこから提供されるアプリケーションでセンスがあります。

これが欲しいのであれば、必要なのはlist functionです。 _design/<doc>/_list/<listname>/<viewname>?vew_paramsでリスト関数を呼び出すことができます。そうすれば、list関数はあなたのビューの結果を受け取り、それをどのような方法で変換します。

さらに、口ひげでフォーマットする場合は、手で行うのは簡単ではなく、通常CouchAppの助けを借りて行われます。理由は、list(またはshow/map/reduce)関数からは他の関数を他の場所で定義することはできません。だからあなたのリスト関数はそれを呼び出すことができるようにmustache.jsライブラリとテンプレート全体を含める必要があります。

+0

あなたの返信用にThanx。明確にするために:私はまた、sammy.jsを使用して着信JSONを解析しています。したがって、JSONの応答はうまくいくでしょう。 html/css/jsファイルを編集してからそれを_designドキュメントに何度も繰り返して貼り付けなければならないのは面倒ですか?それとも、私はここで何かを逃していますか? – Maarten

+0

理論的には、はい、html/css/jsを編集して何度も繰り返して貼り付ける必要があり、面倒です。実際には人々はそれを行うCouchAppを使用しているので、ほとんど問題はありません。 – Slartibartfast

+0

私はまだ少し困惑しています。私のアプリがhttp://app.iriscouch.comにある場合、URL www.app.com/blogはどのように変わって最新の投稿を表示するのですか?それでも、そうするにはPHPのようなものが必要でしょうか? – Maarten

関連する問題