我一直在使用mongoose在ejs页面上成功呈现数据库中的信息。现在我想渲染在特定对象上填充的信息(通过mongo填充)。这甚至可能吗?到目前为止我还没有成功
app.get('/profile', isLoggedIn, function(req, res) {
Event.find(function(err, services) {
if (err) return next(err);
services.forEach(function(service){
Event
.findOne({title: service.title})
.populate('user')
.exec(function (err, populated) {
if (err) return handleError(err);
if(!populated) console.log("failed")
else {
console.log('The creator is ' + populated.user.local.name);
service = populated;
}
});
});
res.render('./partials/profile.ejs', {user: req.user, status: status, badges: badgerinos, services: services}); // load the profile.ejs partial
});
});
console.log正确显示了创建者的名称,但在呈现页面上,用户字段未定义。我究竟做错了什么?
答案 0 :(得分:0)
您是否对每个事件进行了两次查询?如果您尝试列出所有事件并填充用户字段,则应该更快地执行:
Event
.find({})
.populate('user')
.exec((err, services) => {
if (err) return next(err);
//Services are already populated
res.render('./partials/profile.ejs', {user: req.user, status: status, badges: badgerinos, services: services}); // load the profile.ejs partial
});