Přišel jsem na to (díky Timothy!). Problém byl v mém pochopení všech těchto technologií a toho, jak do sebe zapadají. Pro kohokoli dalšího, kdo má zájem o zobrazování obrázků z MongoDB GridFS pomocí Node, Express a Jade ...
Můj dokument v MongoDB má odkaz na obrázek uložený v GridFS, což je ObjectId uložené jako řetězec. např. MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- Poznámka:Řetězcová reprezentace ObjectId. Důvod, proč jsem to uložil jako řetězec, byl ten, že uložení ObjectId mi způsobovalo potíže se směrováním, protože se vykreslovalo jako binární, a nemohl jsem přijít na to, jak to opravit. (Možná tady někdo může pomoci?). Každopádně řešení, které mám, je níže:
Úložiště souborů - Načtěte obrázek z GridFS, předám String Id, které pak převedu na BSON ObjectId (soubor můžete také získat podle názvu souboru):
FileRepository.prototype.getFile = function(callback,id) {
var gs = new GridStore(this.db,new ObjectID(id), 'r');
gs.open(function(err,gs){
gs.read(callback);
});
};
Šablona jadeit - Vykreslit značku HTML:
img(src='/data/#{myentity.ImageId}')
Soubor App.JS - Směrování (pomocí Express) Nastavil jsem cestu '/data/:imgtag' pro dynamické obrázky:
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 );
});
A to udělalo práci. Případné dotazy mi dejte vědět :)