2

私はCouchDBを使用しようとしていますが、かなり新しいです。

データを保存していて、それをクエリしてXML形式でデータを返したいです。

ビューまたはショー関数を記述しますか?布団のどこにショー関数を書くのですか?

誰か例がありますか?

4

1 に答える 1

1

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,'&amp;').replace(/</g,'&lt;'));  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
  • パラメータinclude_docs=trueは、各ドキュメントを結果リストの一部にします。これは標準のCouchDB機能です。
  • パラメータlimit=10は、結果リストを最大10個のドキュメントに保持して、大規模なデータベースがある場合にかかる時間を制限します。
  • ビューにreduce関数がある場合は、パラメーターreduce=falseも入力できます。

それが私のコンピュータをどのように見るか

ビューを直接使用すると、次のようなデータベースがあります。

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>
于 2013-01-04T15:20:50.873 に答える