私はCouchDBを使用しようとしていますが、かなり新しいです。
データを保存していて、それをクエリしてXML形式でデータを返したいです。
ビューまたはショー関数を記述しますか?布団のどこにショー関数を書くのですか?
誰か例がありますか?
CouchAppを使用せず、ビューをxmlとして取得したい場合は、次の1つのライナー(-ish)リストを使用できます。
"xml": "function element(name, row){send('<' + name + '>\\n'); for(field in row) { if (typeof(row[field])=='object') {element(field, row[field])} else {send('<field name=\"' + field + '\">'); send((''+row[field]).replace(/&/g,'&').replace(/</g,'<')); send('</field>\\n');} } send('</' + name + '>\\n');}; function(head, req) { provides('xml', function() { send('<xml>\\n'); while (row=getRow()) { element('row', row) } send('</xml>'); }); }"
設計ドキュメントに1行の関数として入力する必要があるため、1行として保持しました。
設計ドキュメントを作成する
デザインドキュメントをまだ持っていない場合、それを作成する最も簡単な方法は、布団でビューを作成することです。一時ビューと[名前を付けて保存...]選択したdesign_document_nameと選択したview_name。ここでは、デザインドキュメント「select」と「by_id」というビューを使用します。私のby_idビューは次のようになります。
function(doc) {
emit(doc._id, null);
}
リストを設計ドキュメントに入力します
これが作成されたら、布団のドロップダウンメニューから[デザインドキュメントの表示]を選択します。新しく作成された(おそらく)設計ドキュメント_design/selectをクリックします。
[ソース]タブを選択し、[ソース]をダブルクリックします。「ビュー」の直前でもう一度クリックします:...そして、そこにキャレットが配置されていることを確認します。
その行の上に新しい行を作成し、次のように入力します。
"lists": {
|
}
中括弧の中央(パイプ文字がある場所)に、上からワンライナーを貼り付けます。ドキュメントを保存します。
新しいリストを使用してXMLを取得します
これで、任意のビューから任意のデータをXMLとして取得できます。私のビューがそれを行っている場合でも、データベースコンテンツ全体を直接使用することはできず、ビューのみを使用できることに注意してください。
データを表示するには、ブラウザで次のURLを使用します。
http://localhost:5984/content/_design/select/_list/xml/by_id?include_docs=true&limit=10
それが私のコンピュータをどのように見るか
ビューを直接使用すると、次のようなデータベースがあります。
url = localhost:5984 / cartoons / _design / select / _view / by_id?include_docs = true
{"total_rows":6,"offset":0,"rows":[
{"id":"Batman","key":"Batman","value":null,"doc":{"_id":"Batman","_rev":"1-0ec5a1032c2fa8486c921924e13a31cf","publisher":"DC Comics"}},
{"id":"Donald Duck","key":"Donald Duck","value":null,"doc":{"_id":"Donald Duck","_rev":"1-1c431dfb2c46991ec999743830a5363b","publisher":"Walt Disney"}},
{"id":"Iron Man","key":"Iron Man","value":null,"doc":{"_id":"Iron Man","_rev":"1-4f3a3d862b3601a74d6277f4be930e33","publisher":"Marvel Comics"}},
{"id":"Mickey Mouse","key":"Mickey Mouse","value":null,"doc":{"_id":"Mickey Mouse","_rev":"1-1c431dfb2c46991ec999743830a5363b","publisher":"Walt Disney"}},
{"id":"Spider-Man","key":"Spider-Man","value":null,"doc":{"_id":"Spider-Man","_rev":"1-4f3a3d862b3601a74d6277f4be930e33","publisher":"Marvel Comics"}},
{"id":"Superman","key":"Superman","value":null,"doc":{"_id":"Superman","_rev":"1-0ec5a1032c2fa8486c921924e13a31cf","publisher":"DC Comics"}}
]}
そしてXMLで
url = localhost:5984 / cartoons / _design / select / _list / xml / by_id?include_docs = true
<xml>
<row>
<field name="id">Batman</field>
<field name="key">Batman</field>
<value>
</value>
<doc>
<field name="_id">Batman</field>
<field name="_rev">1-0ec5a1032c2fa8486c921924e13a31cf</field>
<field name="publisher">DC Comics</field>
</doc>
</row>
<row>
<field name="id">Donald Duck</field>
<field name="key">Donald Duck</field>
<value>
</value>
<doc>
<field name="_id">Donald Duck</field>
<field name="_rev">1-1c431dfb2c46991ec999743830a5363b</field>
<field name="publisher">Walt Disney</field>
</doc>
</row>
<row>
<field name="id">Iron Man</field>
<field name="key">Iron Man</field>
<value>
</value>
<doc>
<field name="_id">Iron Man</field>
<field name="_rev">1-4f3a3d862b3601a74d6277f4be930e33</field>
<field name="publisher">Marvel Comics</field>
</doc>
</row>
<row>
<field name="id">Mickey Mouse</field>
<field name="key">Mickey Mouse</field>
<value>
</value>
<doc>
<field name="_id">Mickey Mouse</field>
<field name="_rev">1-1c431dfb2c46991ec999743830a5363b</field>
<field name="publisher">Walt Disney</field>
</doc>
</row>
<row>
<field name="id">Spider-Man</field>
<field name="key">Spider-Man</field>
<value>
</value>
<doc>
<field name="_id">Spider-Man</field>
<field name="_rev">1-4f3a3d862b3601a74d6277f4be930e33</field>
<field name="publisher">Marvel Comics</field>
</doc>
</row>
<row>
<field name="id">Superman</field>
<field name="key">Superman</field>
<value>
</value>
<doc>
<field name="_id">Superman</field>
<field name="_rev">1-0ec5a1032c2fa8486c921924e13a31cf</field>
<field name="publisher">DC Comics</field>
</doc>
</row>
</xml>