Разбрах това (благодаря Тимъти!). Проблемът беше моето разбиране за всички тези технологии и как те се съчетават. За всеки друг, който се интересува от показване на изображения от MongoDB GridFS с помощта на Node, Express и Jade ...
Моят документ в MongoDB има препратка към изображението, съхранено в GridFS, което е ObjectId, съхранен като низ. напр. MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- NB:Низово представяне на ObjectId. Причината, поради която го съхраних като низ, беше, че съхраняването на ObjectId ми създаваше затруднения при маршрутизирането, тъй като се изобразяваше като двоично и не можех да разбера как да поправя това. (Може би някой може да помогне тук?). Както и да е, решението, което имам, е по-долу:
FileRepository - Извличане на изображението от GridFS, подавам String Id, който след това конвертирам в BSON ObjectId (можете също да получите файла по име на файл):
FileRepository.prototype.getFile = function(callback,id) {
var gs = new GridStore(this.db,new ObjectID(id), 'r');
gs.open(function(err,gs){
gs.read(callback);
});
};
Нефритен шаблон - Изобразете HTML маркирането:
img(src='/data/#{myentity.ImageId}')
Файл App.JS - Маршрутизиране (с помощта на Express) Настройвам маршрута '/data/:imgtag' за динамични изображения:
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 );
});
И това свърши работа. Ако имате въпроси, уведомете ме :)