2016-03-26 15 views
0

私はNode/Expressとmongooseを使ってアプリケーションをビルドしています。私は基本的に単なる画像オブジェクトである私のデータベース(以下に示すスキーマ)に「写真」オブジェクトを作成しています。ejsページにmongooseオブジェクトを表示する

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

私は正常にアップロードし、写真のオブジェクトを作成し、今私は、私はすべての写真オブジェクトを抽出してそれを画像としてレンダリングする場所/画像が表示作成していますすることができます。私は私の意見にejsを使用しています。グーグルいくつかを行った後、私は私のimages.ejsファイルに対して次を思い付くHAV:

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

それは「写真が定義されていない」と言うとき、私はロード/画像。

私はmongooseオブジェクトをejsページに直接抽出しようとしました。私の機能が私のデータベースの写真オブジェクトを参照していることを理解するために必要なことがありますか?

私はまた、次のルートを持っている:

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

ありがとうございました!

答えて

1

ビュー変数はimagesres.render('images', { images: doc });)で、photosではありません。どちらか一方の名前を変更すると動作するはずです。

+0

ありがとうございました!だからシンプルだけど、おそらく自分でそれを理解していないだろう。 – HarrytheCat

関連する問題