MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Renderuj obraz przechowywany w Mongo (GridFS) za pomocą Node + Jade + Express

Rozgryzłem to (dzięki Timothy!). Problemem było moje zrozumienie wszystkich tych technologii i tego, jak one do siebie pasują. Dla wszystkich, którzy są zainteresowani wyświetlaniem obrazów z MongoDB GridFS za pomocą Node, Express i Jade ...

Mój dokument w MongoDB ma odniesienie do obrazu przechowywanego w GridFS, który jest identyfikatorem ObjectId przechowywanym jako ciąg. np. MyEntity {ImageId:'4f6d39ab519b481eb4a5cf52'} <-- Uwaga:ciąg reprezentujący ObjectId. Powodem, dla którego zapisałem go jako ciąg, było to, że przechowywanie ObjectId sprawiało mi kłopot w Routingu, ponieważ renderował się jako binarny i nie mogłem wymyślić, jak to naprawić. (Może ktoś może tu pomóc?). W każdym razie rozwiązanie, które mam, jest poniżej:

Repozytorium plików - Pobierz obraz z GridFS, przekazuję String Id, który następnie konwertuję na BSON ObjectId (możesz również pobrać plik według nazwy pliku):

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

Szablon Jade - Renderuj znaczniki HTML:

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

Plik App.JS - Routing (za pomocą Express) Ustawiam trasę „/data/:imgtag” dla obrazów dynamicznych:

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

I to zrobiło robotę. Wszelkie pytania daj mi znać :)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB nie może przeanalizować zapytania (2dsphere):dwa warunki

  2. Niemożliwe tworzenie użytkowników (lub niestandardowych ról) w Mongo na serwerze NodeJS

  3. Wybierz pasujący element tablicy i zwróć wybrane pola

  4. MongoDB znajdź dokumenty, w których wszystkie elementy tablicy mają pewną wartość

  5. Django z MongoDB