私はこれを理解しました(ティモシーに感謝します!)。問題は、これらすべてのテクノロジーとそれらがどのように組み合わされるかについての私の理解でした。Node、Express、および Jade を使用して MongoDB GridFS から画像を表示することに興味がある他の人のために...
MongoDB のマイ ドキュメントには、文字列として格納された ObjectId である GridFS に格納された Image への参照があります。例: MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- 注意: ObjectId の文字列表現。それを文字列として保存した理由は、ObjectId を保存すると、ルーティングがバイナリとしてレンダリングされ、これを修正する方法がわからなかったためです。(多分誰かがここで助けることができますか?)。とにかく、私が持っている解決策は以下の通りです:
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 );
});
そして、それは仕事をしました。質問があれば教えてください:)