Les vues sont destinées à restituer les données sans formatage. Les 'shows' et les 'lists' mettent en forme les données. Le 'show' ne s'applique qu'a une entrée à l'inverse de la 'list' qui porte sur un groupe de données.
Concrètement le source des vues est un document JSON. Il faut a chaque fois, récupérer le document source, le modifier et le recharger sur couchdb.
{"_id":"_design/tablefait","_rev":"12-bf5c8cb0de5d7c352af03cb8ea45e8b6",
"language":"javascript",
"views":{
"cam-an-mois":{"map":"function(doc)
{if (doc.TYPE ==\"RAW\") {emit ([doc.campagne,doc.annee,doc.mois], doc); } }"}},
"lists":
{"indexml":"function (head, req)
{ var row;
start({ \"headers\":{\"Content-Type\" : \"application/xml\" }
});
send(\"<entries>\");
while(row = getRow())
{
var xml= new XML (\"<entry/>\");
xml.campagne=row.value.campagne; xml.annee=row.value.annee;
xml.mois=row.value.mois; send(xml);
}
send(\"</entries>\");
}"
}
}
Ici 'tablefait' est le nom du groupe de restitution, 'cam-an-mois' est le nom de la vue qui va servir à restituer les entrées suivant des clés d'index. Enfin 'indexml' est la fonction javascript à appliquer pour formater les résultats.
Utilisation d'une vue sans formatage particulier :
Par un navigateur : http.... 5984/db/_design/tablefait/_view/cam-an-mois?[2010,2010,09]
Avec le formatage XML
Par un navigateur : http.... 5984/db/_design/tablefait/_list/indexml/cam-an-mois?[2010,2010,09]
Attention la construction de l'url est fonction de la version de couchDB.
Les difficultés d'écriture d'une fonction de formatage sont les suivantes:
- Le javascript de la fonction de formatage sera stocké dans une chaine de caractère. Les quotes sont à protéger par des '\'.
- A chaque mise au point, le numéro de révision sera à ajuster.
Pour gérer ces problèmes plusieurs solutions sont possibles et seront présentées prochainement.
Aucun commentaire:
Enregistrer un commentaire