L'ho capito (grazie Timothy!). Il problema era la mia comprensione di tutte queste tecnologie e di come si adattano insieme. Per chiunque altro sia interessato a visualizzare immagini da MongoDB GridFS utilizzando Node, Express e Jade ...
Il mio documento in MongoDB ha un riferimento all'immagine archiviata in GridFS che è un ObjectId archiviato come stringa. per esempio. MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- NB:rappresentazione in stringa di ObjectId. Il motivo per cui l'ho memorizzato come stringa era perché la memorizzazione di ObjectId mi dava problemi nel Routing poiché eseguiva il rendering come binario e non riuscivo a capire come risolverlo. (Forse qualcuno può aiutare qui?). Ad ogni modo, la soluzione che ho è la seguente:
Archivio di file - Recupero l'immagine da GridFS, passo uno String Id, che poi converto in BSON ObjectId (puoi anche ottenere il file per nome file):
FileRepository.prototype.getFile = function(callback,id) {
var gs = new GridStore(this.db,new ObjectID(id), 'r');
gs.open(function(err,gs){
gs.read(callback);
});
};
Modello Giada - Rendering del markup HTML:
img(src='/data/#{myentity.ImageId}')
File App.JS - Routing (usando Express) Ho impostato il percorso '/data/:imgtag' per le immagini dinamiche:
app.get('/data/:imgtag', function(req, res) {
fileRepository.getFile( function(error,data) {
res.writeHead('200', {'Content-Type': 'image/png'});
res.end(data,'binary');
}, req.params.imgtag );
});
E questo ha fatto il lavoro. Qualsiasi domanda fammi sapere :)