如果您不想使用 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,'&').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>'); }); }"
我将它保留为一行,因为它必须作为一行函数输入到设计文档中。
创建设计文档
如果您还没有设计文档,最简单的创建方法是在蒲团临时视图和 [另存为...] 您选择的 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>