2017-07-19 4 views
0

Verwenden von Nano zum Abfragen einer Couch-Ansicht in NodeJS, um das Vorkommen von Tags in allen Dokumenten zu zählen. Wenn ich in Fauxton in der Ansicht reduzieren wähle, wird es korrekt mit jedem Tag-Namen als Schlüssel und der Anzahl angezeigt. Von meiner Knoten-App bekomme ich aber nur 'Null' als Schlüssel und insgesamt alle Tags.Schlüssel, die nicht in reduzierter Funktion zurückgegeben werden

Der Tag-Name (anstatt der _id) wird in jedem Dokument gespeichert. Dies ist meine Map-Funktion (mit der _count reduzieren Funktion):

function (doc, meta) { 
    if(doc.tags) { 
    for(var i in doc.tags) { 
     emit(doc.tags[i],1); 
    } 
    } 
} 

Das ist mein (Nano) Code in Knoten:

app.get('/listtags', function(req, res) { 
    couch.view('objects', 'tags-count', {reduce: true}, function(err, body) { 
     console.log(body); 
    }); 
}); 

Und es gibt:

{ rows: [ { key: null, value: 8 } ] } 

EDIT Hinzufügen von Beispieldokumenten:

Tag:

{ 
"_id": "...", 
"_rev": "1-...", 
"type": "tag", 
"name": "petrol" 
} 

Doc enthält tags:

{ 
"_id": "...", 
"_rev": "3-...", 
"type": "car", 
"title": "Audi", 
"desc": "description here", 
"tags": [ 
    "petrol", 
    "aircon", 
    "leather seats" 
] 
} 
+1

Können Sie uns ein Beispiel für die ein Dokument Eintrag geben? –

+0

hinzugefügt Beispieldokument – user4893295

+0

Versuchen Sie mit {reduce: true, group_level: true}. Wenn es funktioniert, werde ich dies als die Antwort posten –

Antwort

0

Dies liegt daran, dass Sie entweder die group_level Option oder die group=true Option angeben müssen.

zB:

app.get('/listtags', function(req, res) { 
    couch.view('objects', 'tags-count', {reduce: true, group: true}, function(err, body) { 
     console.log(body); 
    }); 
}); 
Verwandte Themen