0

使用 Nano 在 NodeJS 中查询 Couch 视图,以计算所有文档中标签的出现次数。如果我在视图上选择 Fauxton 中的 reduce,它会正确显示每个标签名称作为键和计数。但是,在我的 Node 应用程序中,我只是将“Null”作为键,以及所有标签。

标签名称(而不是 _id)存储在每个文档中。这是我的地图功能(使用 _count 减少功能):

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"
]
}
4

1 回答 1

0

这是因为您必须指定group_level选项或group=true选项。

例如:

app.get('/listtags', function(req, res) {
    couch.view('objects', 'tags-count', {reduce: true, group: true}, function(err, body) {
        console.log(body);
    });
});
于 2017-07-19T17:03:08.450 回答