2011-10-11 6 views
1

Juste pour avoir une idée de CouchDB et de quelques malentendus.Couchdb: Show _attachments

Je peux énumérer les enregistrements d'une vue avec (grâce à un répondeur précédent)

http://mysite.iriscouch.com/mydb/_design/_view/myview 

J'ai modifié mon point de vue d'inclure _attachments, mais cela ne semble pas être montrant les _attachments, qui sont Jpeg des dossiers.

map 
function(doc) { 
    if(doc.SignMark && doc.Details) { 
    emit(doc.SignMark, doc.Details, doc._attachments); 
    } 
} 

J'ai évidemment manqué un certain concept simple

Merci de - MCL

Répondre

2

Emit prend toujours deux paramètres: la clé et la valeur. Chacun peut être un objet. Donc, cela fonctionnerait:

function(doc) { 
    if(doc.SignMark && doc.Details) { 
    emit(doc.SignMark, [doc.Details, doc._attachments]); 
} 
} 

Mais vous pouvez construire des clés arbitraires et des valeurs à émettre, et vous pouvez également émettre des valeurs multiples ou pas du tout pour chaque document. L'excellente CouchDB Book m'a beaucoup aidé! Ceci est le chapitre pertinent pour les vues: http://guide.couchdb.org/draft/views.html

+1

Merci beaucoup. J'ai imprimé ce chapitre et le lirai au cours de mon dîner plus tard. Malheureusement, votre suggestion fonctionne, mais elle répertorie les métadonnées de la pièce jointe et non l'image jpeg réelle. Est-il possible d'afficher l'image lors de l'exécution de la vue en tant que requête http dans la barre d'adresse du navigateur? J'utilise la barre d'adresse du navigateur, comme un moyen de comprendre rapidement les fonctionnalités de base. – mcl

+1

Vous visualisez les données JSON, qui sont plus ou moins une chaîne. Si vous voulez voir le document en tant que page HTML, alors vous devriez écrire une fonction d'affichage que vous pouvez utiliser pour formater votre document (ou une fonction de liste qui peut bien afficher le résultat d'une vue): http: //guide.couchdb. org/draft/show.html –

+1

Il n'existe aucun moyen d'afficher les données binaires + les données JSON. Les fonctions MapReduce View renvoient uniquement un document JSON. Bernhard a mentionné la fonction show qui vous permettrait d'écrire une interface HTML pour des documents individuels. Cependant, dans ce cas, vous pouvez envisager de créer une fonction List: http://guide.couchdb.org/draft/transforming.html Elle est similaire à Show, mais utilise View results pour son entrée plutôt qu'un seul document. J'espère que cela pourra aider! – BigBlueHat

2

Depuis une vue, vous ne pouvez pas accéder aux pièces jointes elles-mêmes. Vous pouvez uniquement les métadonnées qui sont stockées dans les doc._attachments.

Ainsi, selon vos besoins, vous devrez accéder à la pièce jointe réelle avec une deuxième demande du format /db/doc-id/attachment-name.jpg

ou, si vous êtes rendu au format html, Il suffit de construire une balise d'image avec le src = '/ db/doc-id/nom-pièce jointe.jpg'

+0

Comment puis-je obtenir la clé/le nom de la pièce jointe en utilisant des vues? –

Questions connexes