MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Render Gambar Disimpan di Mongo (GridFS) dengan Node + Jade + Express

Saya menemukan ini (terima kasih Timothy!). Masalahnya adalah pemahaman saya tentang semua teknologi ini dan bagaimana mereka cocok bersama. Bagi siapa saja yang tertarik untuk menampilkan gambar dari MongoDB GridFS menggunakan Node, Express dan Jade ...

Dokumen Saya di MongoDB memiliki referensi ke Gambar yang disimpan di GridFS yang merupakan ObjectId yang disimpan sebagai string. misalnya MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- NB:Representasi string dari ObjectId. Alasan saya menyimpannya sebagai string adalah karena menyimpan ObjectId memberi saya kesulitan dalam Perutean karena dirender sebagai biner dan saya tidak tahu cara memperbaikinya. (Mungkin ada yang bisa bantu disini?). Bagaimanapun, solusi yang saya miliki ada di bawah ini:

FileRepository - Ambil gambar dari GridFS, saya berikan String Id, yang kemudian saya konversi ke BSON ObjectId (Anda juga bisa mendapatkan file dengan nama file):

FileRepository.prototype.getFile = function(callback,id) {
   var gs = new GridStore(this.db,new ObjectID(id), 'r');
   gs.open(function(err,gs){
      gs.read(callback);
   });
 };

Template Giok - Render Markup HTML:

img(src='/data/#{myentity.ImageId}')

Berkas App.JS - Perutean (menggunakan Ekspres) Saya menyiapkan rute '/data/:imgtag' untuk gambar dinamis:

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 );
});

Dan itu berhasil. Ada pertanyaan beri tahu saya :)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat Mongoose/Mongodb - grup dan rata-rata beberapa bidang

  2. Yii2 Rekaman aktif bagaimana membuat hubungan antara model mongo

  3. MongoDB/Meteor:Tambahkan ID unik ke setiap elemen array

  4. Tidak bisa mendapatkan Array Subdocument Mongoose.js untuk diisi

  5. Permintaan untuk menemukan semua dokumen dengan milidetik bukan nol