2016-03-26 9 views
0

Ich benutze Node/Express und Mungo, um eine App zu bauen. Ich erstelle 'Photo'-Objekte in meiner Datenbank (Schema unten gezeigt), das im Grunde genommen nur ein Bildobjekt ist.Anzeige von Mungo-Objekten auf EJS-Seite

var PhotoSchema = new mongoose.Schema({ 
    image: { data: Buffer, contentType: String }, 
    name: String 
}); 

Ich kann erfolgreich laden und Foto-Objekte erstellen und jetzt bin ich die Schaffung eines/Bilder sehen, wo ich jedes Foto-Objekt zu extrahieren und sie als ein Bild zu machen. Ich benutze ejs für meine Ansichten. Nachdem einige googeln tun I hav mit den folgenden für meine images.ejs Datei kommen:

<% photos.forEach(function(photo){ %> 
    <img src="/img/<%=photo._id%>" > 
<% }) %> 

Wenn ich laden/images es heißt „Fotos nicht definiert ist“.

Dies ist das erste Mal, dass ich versucht habe, Mungo-Objekte direkt auf eine EJS-Seite zu extrahieren - muss ich noch etwas anderes tun, damit meine Funktion versteht, dass ich mich auf die Fotoobjekte in meiner Datenbank beziehe?

ich auch folgende Routen haben:

router.get('/img', function (req, res, next) { 
try { 
    Photo.findOne({}, function (err, doc) { 
     if (err) 
      res.send(err); 
     if (doc) { 
      res.contentType(doc.image.contentType); 
      res.send(doc.image.data); 
     } 
    }); 
} 
catch (e) { 
    res.send(e); 
} 
}); 

router.get('/img/:id', function (req, res) { 
try { 
    Photo.findOne({ _id: req.params.id }, function (err, doc) { 
     if (err) 
      res.send(err); 
     res.setHeader('Cache-Control', 'public, max-age=3000000'); 
     res.contentType(doc.image.contentType); 
     res.send(doc.image.data); 
    }); 
} 
catch (e) { 
    res.send(e); 
} 
}); 

router.get('/images', function (req, res) { 
try { 
    Photo.find({}, function (err, doc) { 
     if (err) 
      res.send(err); 
     res.render('images', { images: doc }); 
    }); 
} 
catch (e) { 
    res.send(e); 
} 
}); 

Vielen Dank!

Antwort

1

Ihre Ansichtsvariable ist images (res.render('images', { images: doc });), nicht photos. Benennen Sie das eine oder andere um und es sollte funktionieren.

+0

Vielen Dank! So einfach, aber wahrscheinlich hätte ich es nicht selbst herausgefunden. – HarrytheCat