Utilisation de Nano pour interroger une vue Couch dans NodeJS, pour compter les occurrences de balises dans tous les documents. Si je choisis réduire dans Fauxton sur la vue, il affiche correctement avec chaque nom de tag comme clé, et le nombre. Cependant, à partir de mon application Node, je reçois simplement 'Null' comme clé, et un total de tous les tags.Les touches ne sont pas renvoyées dans la fonction de réduction
Le nom du tag (plutôt que le _id) est stocké dans chaque document. Ceci est ma fonction de carte (en utilisant la _count réduire la fonction):
function (doc, meta) {
if(doc.tags) {
for(var i in doc.tags) {
emit(doc.tags[i],1);
}
}
}
Ceci est mon (Nano) code Node:
app.get('/listtags', function(req, res) {
couch.view('objects', 'tags-count', {reduce: true}, function(err, body) {
console.log(body);
});
});
Et il retourne:
{ rows: [ { key: null, value: 8 } ] }
EDIT Ajout d'exemples de documents:
Tag:
{
"_id": "...",
"_rev": "1-...",
"type": "tag",
"name": "petrol"
}
Doc contenant des tags:
{
"_id": "...",
"_rev": "3-...",
"type": "car",
"title": "Audi",
"desc": "description here",
"tags": [
"petrol",
"aircon",
"leather seats"
]
}
Pouvez-vous nous donner un exemple de l'une entrée de document? –
added example docs – user4893295
Essayez avec {reduce: true, group_level: true}. Si cela fonctionne, je posterai ceci comme réponse –