Bir uygulama oluşturmak için Node/Express ve Mongoose kullanıyorum. Temelde sadece bir görüntü nesnesi olan veritabanımda 'Fotoğraf' nesneleri (aşağıda gösterilen şema) oluşturuyorum.ejs sayfasında mongoose nesnelerini görüntüleme
var PhotoSchema = new mongoose.Schema({
image: { data: Buffer, contentType: String },
name: String
});
başarıyla yükleyebilir ve fotoğraf nesneler oluşturmak ve şimdi ben her fotoğraf nesnesi ayıklamak ve bir resim olarak oluşturması için istediğiniz yere bir/images görüntülemek oluşturma yapabilirsiniz. Görüşlerim için ejs kullanıyorum. Benim images.ejs dosyası için aşağıdaki ile gelip hav Bazı googling yaptıktan sonra:
<% photos.forEach(function(photo){ %>
<img src="/img/<%=photo._id%>" >
<% }) %>
Ben "Fotoğraf tanımlı değil" diyor/Resimlerinizi yüklediğinizde.
Bu ilk kez bir ejs sayfasına mongoose nesnelerini çıkarmayı denediğim ilk şeydir - yapmam gereken başka bir şey var mı/içerdiğimi, böylece işlevimin benim veritabanımdaki fotoğraf nesnelerine atıfta bulunduğunu anlayabiliyorum?
şunlarla yolları vardır:
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);
}
});
teşekkür ederiz!
Teşekkür ederiz! Çok basit ama muhtemelen kendi başıma düşünmezdim. – HarrytheCat