Я понял это (спасибо Тимоти!).Проблема заключалась в том, что я понимал все эти технологии и то, как они сочетаются друг с другом.Для всех, кто заинтересован в отображении изображений из MongoDB GridFS с использованием Node, Express и Jade ...
Мой документ в MongoDB содержит ссылку на изображение, хранящееся в GridFS, который представляет собой ObjectId, хранящийся в виде строки.например, MyEntity {ImageId: '4f6d39ab519b481eb4a5cf52'} <- NB: строковое представление ObjectId.Причина, по которой я сохранил ее в виде строки, заключалась в том, что сохранение ObjectId доставляло мне боль при маршрутизации, так как он рендерился как двоичный файл, и я не мог понять, как это исправить.(Может быть, кто-то может помочь здесь?).В любом случае, у меня есть решение ниже: </p>
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);
});
};
Шаблон Jade - Визуализация HTML-разметки:
img(src='/data/#{myentity.ImageId}')
App.JSfile - Маршрутизация (с использованием 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 );
});
И это помогло.Любые вопросы, дайте мне знать:)