使用Nano查询NodeJS中的Couch视图,计算所有文档中标记的出现次数。如果我在视图中选择Fauxton中的reduce,它会正确显示每个标记名称作为键和计数。但是,从我的Node应用程序中,我只是得到了Null'作为密钥,以及所有标记的总和。
标记名称(而不是_id)存储在每个文档中。这是我的map函数(使用_count reduce函数):
function (doc, meta) {
if(doc.tags) {
for(var i in doc.tags) {
emit(doc.tags[i],1);
}
}
}
这是我在Node中的(Nano)代码:
app.get('/listtags', function(req, res) {
couch.view('objects', 'tags-count', {reduce: true}, function(err, body) {
console.log(body);
});
});
它返回:
{ rows: [ { key: null, value: 8 } ] }
修改 添加示例文档:
标签:
{
"_id": "...",
"_rev": "1-...",
"type": "tag",
"name": "petrol"
}
包含标签的文档:
{
"_id": "...",
"_rev": "3-...",
"type": "car",
"title": "Audi",
"desc": "description here",
"tags": [
"petrol",
"aircon",
"leather seats"
]
}
答案 0 :(得分:0)
这是因为您必须指定group=true
选项或app.get('/listtags', function(req, res) {
couch.view('objects', 'tags-count', {reduce: true, group: true}, function(err, body) {
console.log(body);
});
});
选项。
例如:
<style type="text/css">
body{
background-image: url("../../Images/tulip.gif");
background-repeat: no-repeat;
background-attachment:fixed;
color:#665544;
padding:20px;
}
</style>
<body>
<h1>Planting Guide</h1>
<h2>Magnolia</h2>
<p>some long text</p>
</body>