鉴于我的以下文件:
{
_id: ###,
type: "blogpost",
title: "First blog post",
tag: "tutorial"
}
{
_id: ###,
type: "blogpost",
title: "Second blog post",
tag: "report"
}
{
_id: ###,
type: "blogpost",
title: "Third blog post",
tag: "tutorial"
}
{
_id: ###,
type: "blogpost",
title: "Fourth blog post",
tag: "article"
}
现在,我想做的是:查找所有标记为文章或报告的博客帖子。
我已经在文档中读到我能够对视图或列表执行POST,允许搜索多个键。但这总是需要cURL或者其他什么?
答案 0 :(得分:1)
如果您需要指定文章,在HTTP调用中报告为变量,那么您只需要一个视图和一个列表
查看:test_view
function(doc) {
if (doc.tag) {
emit(doc.tag, doc);
}
};
列表:test_list
function(head, req) {
start({
"headers": {
"Content-Type": "text/html"
}
});
var row;
var tags = req.query.tags;
var tagArray = tags.split(',');
while(row = getRow()) {
if (tagArray.indexOf(row.key) != -1) {
send(row.value.tag + ' : ' + row.value.title + '<br>');
}
}
}
现在,你可以获得list / html http://yourserver.com:5985/db/_design/test/_list/test_list/test_view?tags=article,report
答案 1 :(得分:0)
您将需要创建至少一个视图才能使其正常工作。我不太了解你的需求,所以我只是做一个简单的例子而不考虑它是实现你想要的最佳方式。
在http://yourserver.com:5984/_utils访问Futon,并在数据库中创建一个视图。您只需要一个地图功能来完成您的要求:
function(doc) {
if (doc.tag && (doc.tag == "article" || doc.tag == "report")) {
emit(doc.tag, doc);
}
}
如果您保存视图并将其命名为articles_or_reports,则可以使用此请求从视图中获取数据:
http://yourserver.com:5984/db/_design/test/_view/articles_or_reports
将返回
{"total_rows":2,"offset":0,"rows":[
{"id":"168ba21f7209994b69336dd8c30041f3","key":"article","value":{"_id":"168ba21f7209994b69336dd8c30041f3","_rev":"1-f033b30522d09c33cbd68332b89c95a7","type":"blogpost","title":"Fourth blog post","tag":"article"}},
{"id":"168ba21f7209994b69336dd8c3003139","key":"report","value":{"_id":"168ba21f7209994b69336dd8c3003139","_rev":"1-f7a473afc253972f7cfec62a335dcb23","type":"blogpost","title":"Second blog post","tag":"report"}}
]}
但这总是需要cURL或者其他什么?
这取决于您的应用程序,但CouchDB的唯一接口是通过HTTP。有许多语言的库可以将您的交互带到更高的层次。