在 ejs 页面上显示 mongoose 对象
Displaying mongoose objects on ejs page
我正在使用 Node/Express 和猫鼬构建应用程序。我正在我的数据库中创建 'Photo' 个对象(如下所示的模式),它基本上只是一个图像对象。
var PhotoSchema = new mongoose.Schema({
image: { data: Buffer, contentType: String },
name: String
});
我可以成功上传和创建照片对象,现在我正在创建一个 /images 视图,我想在其中提取每个照片对象并将其渲染为图像。我正在使用 ejs 来表达我的观点。在谷歌搜索后,我为我的 images.ejs 文件想出了以下内容:
<% photos.forEach(function(photo){ %>
<img src="/img/<%=photo._id%>" >
<% }) %>
当我加载 /images 时,它显示 "photos is not defined"。
这是我第一次尝试将 mongoose 对象直接提取到 ejs 页面上 - 我还需要做些什么吗 do/include 以便我的函数理解我指的是数据库中的照片对象?
我还有以下路线:
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);
}
});
谢谢!
您的视图变量是 images
(res.render('images', { images: doc });
),而不是 photos
。重命名一个或另一个,它应该可以工作。
我正在使用 Node/Express 和猫鼬构建应用程序。我正在我的数据库中创建 'Photo' 个对象(如下所示的模式),它基本上只是一个图像对象。
var PhotoSchema = new mongoose.Schema({
image: { data: Buffer, contentType: String },
name: String
});
我可以成功上传和创建照片对象,现在我正在创建一个 /images 视图,我想在其中提取每个照片对象并将其渲染为图像。我正在使用 ejs 来表达我的观点。在谷歌搜索后,我为我的 images.ejs 文件想出了以下内容:
<% photos.forEach(function(photo){ %>
<img src="/img/<%=photo._id%>" >
<% }) %>
当我加载 /images 时,它显示 "photos is not defined"。
这是我第一次尝试将 mongoose 对象直接提取到 ejs 页面上 - 我还需要做些什么吗 do/include 以便我的函数理解我指的是数据库中的照片对象?
我还有以下路线:
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);
}
});
谢谢!
您的视图变量是 images
(res.render('images', { images: doc });
),而不是 photos
。重命名一个或另一个,它应该可以工作。