2011-11-11 8 views
1
私の次のドキュメントを考える

CouchDBのビュードキュメント=バー

{ 
    _id: ###, 
    type: "blogpost", 
    title: "First blog post", 
    tag: "tutorial" 
} 

{ 
    _id: ###, 
    type: "blogpost", 
    title: "Second blog post", 
    tag: "report" 
} 

{ 
    _id: ###, 
    type: "blogpost", 
    title: "Third blog post", 
    tag: "tutorial" 
} 

{ 
    _id: ###, 
    type: "blogpost", 
    title: "Fourth blog post", 
    tag: "article" 
} 

、である私は何をしたいと思います:タグは、記事やレポートですべてのブログ記事を検索します。

私はすでに文書で、ビューまたはリストに対してPOSTを実行でき、複数のキーを検索できることを確認しました。しかし、これは常にcURLか何かが必要でしょうか?

答えて

1

あなたが記事、あなたのHTTP呼び出しで変数としてレポートを指定する必要がある場合には、あなたが必要とするすべてのビューとリスト

ビューです:test_view

function(doc) { 
    if (doc.tag) { 
    emit(doc.tag, doc); 
    } 
}; 

一覧:test_list

function(head, req) { 
    start({ 
    "headers": { 
     "Content-Type": "text/html" 
    } 
    }); 
    var row; 
    var tags = req.query.tags; 
    var tagArray = tags.split(','); 
    while(row = getRow()) { 
    if (tagArray.indexOf(row.key) != -1) { 
     send(row.value.tag + ' : ' + row.value.title + '<br>'); 
    } 
    } 
} 

さて、あなたがリスト/ HTMLを取得することができます http://yourserver.com:5985/db/_design/test/_list/test_list/test_view?tags=article,report

+0

それはまさに私が探していたものです。私のjavascriptの知識は、自分のためにそれを理解するのに十分なほど素晴らしいです。助けてくれてありがとう! – Maarten

0

この作業を行うには、少なくとも1つのビューを作成する必要があります。私はあなたのニーズの良いアイデアを持っていないので、あなたが望むものを実装する最良の方法であると考えずに単純な例を実行します。

ふとんhttp://yourserver.com:5984/_utilsにアクセスし、データベースにビューを作成します。あなただけのあなたが求めているものを達成するために、マップ機能が必要になります:

function(doc) { 
    if (doc.tag && (doc.tag == "article" || doc.tag == "report")) { 
     emit(doc.tag, doc); 
    } 
} 

あなたのビューを保存し、それがarticles_or_reports呼び出した場合、あなたはこの要求を使用してビューからデータを取得することができます。

http://yourserver.com:5984/db/_design/test/_view/articles_or_reports 

{"total_rows":2,"offset":0,"rows":[ 
{"id":"168ba21f7209994b69336dd8c30041f3","key":"article","value":{"_id":"168ba21f7209994b69336dd8c30041f3","_rev":"1-f033b30522d09c33cbd68332b89c95a7","type":"blogpost","title":"Fourth blog post","tag":"article"}}, 
{"id":"168ba21f7209994b69336dd8c3003139","key":"report","value":{"_id":"168ba21f7209994b69336dd8c3003139","_rev":"1-f7a473afc253972f7cfec62a335dcb23","type":"blogpost","title":"Second blog post","tag":"report"}} 
]} 

を返します。しかし、これはいつものcURLまたは右に何かが必要になりますどれですか?

これはアプリケーションによって異なりますが、CouchDBの唯一のインターフェイスはHTTP経由です。あなたのインタラクションをより高いレベルにするために、多くの言語のための図書館があります。

+0

あなたの答えは高尚です。私は確かにすでにビューとリストを作成しました。しかし、タグを変数にする必要があります。したがって、次のようなものがあります:http://yourserver.com:5985/db/_design/test/_view/blogs?key="article,report "明らかにこれは動作しませんが、私はポストを使わずにそのようなものが必要です。 – Maarten