我想通了(謝謝蒂莫西!)。問題是我對所有這些技術的理解以及它們如何組合在一起。對於任何有興趣使用Node,Express和Jade顯示來自MongoDB GridFS的圖像的人...
我在MongoDB中的文檔中引用了存儲在GridFS中的圖像,該圖像是存儲爲 字符串的ObjectId。例如MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} < - NB:ObjectId的字符串表示形式。我將它存儲爲字符串的原因是因爲存儲ObjectId在Routing中給我一個痛苦 ,因爲它以二進制形式呈現,我無法弄清楚如何解決這個問題。 (也許有人可以幫忙嗎?)。總之,該解決方案我有低於:
FileRepository文件 - 檢索GridFS的形象,我傳遞一個字符串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文件 - 路由(使用快遞)我設置了 '/數據/: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);
});
,但這並工作。任何問題都讓我知道:)
修復MIME類型或從網格中檢測到它 – 2012-03-23 21:14:53
謝謝蒂莫西,這指出我在正確的方向。還有一個我需要解決的其他問題,所以我在下面發佈我的解決方案以獲得完整性。 – 2012-03-24 03:31:16