我想通了(感谢蒂莫西!)。问题在于我对所有这些技术以及它们如何组合在一起的理解。对于任何有兴趣使用 Node、Express 和 Jade 从 MongoDB GridFS 显示图像的人...
我在 MongoDB 中的文档有一个对存储在 GridFS 中的 Image 的引用,它是一个 ObjectId,存储为
一个字符串。例如MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'}
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);
});
};
Jade 模板 - 渲染 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 );
});
这样就完成了。有任何问题请告诉我:)