2

我正在尝试使用 CouchDB,但我对它很陌生。

我存储了数据,我想查询它并以 XML 格式返回数据。

我是写视图还是显示函数?在蒲团上哪里写一个显示功能?

有没有人有任何例子?

4

1 回答 1

1

如果您不想使用 CouchApp 并且只想将您的视图作为 xml 获取,您可以使用这个衬里 (-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>');   });    }"

我将其保留为一行,因为它必须在设计文档中作为单行函数输入。

创建设计文档

如果您还没有设计文档,最简单的创建方法是在 futons Temporary View 和 [Save As...] 您选择的 design_document_name 和您选择的 view_name 中创建一个视图。我将在此使用设计文档“select”和一个名为“by_id”的视图。我的 by_id 视图如下所示:

function(doc) {
  emit(doc._id, null);
}

将列表输入到设计文档中

创建完成后,从蒲团的下拉菜单中选择查看“设计文档”。单击新(可能)创建的设计文档_design/select。

选择选项卡 Source 并双击 Source。在“views”之前再次单击:...并确保您将插入符号放在那里。

在该行上方新建一行并输入:

"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 回答