我正在尝试使用 CouchDB,但我对它很陌生。
我存储了数据,我想查询它并以 XML 格式返回数据。
我是写视图还是显示函数?在蒲团上哪里写一个显示功能?
有没有人有任何例子?
如果您不想使用 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>'); }); }"
我将其保留为一行,因为它必须在设计文档中作为单行函数输入。
创建设计文档
如果您还没有设计文档,最简单的创建方法是在 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
它在我的电脑上的外观
当我直接使用视图时,我有一个如下所示的数据库:
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>