无法将 mongo 人口传递到 ejs 页面
can't pass mongo population onto ejs page
我一直在使用 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正确显示了创建者的名字,但在渲染页面上,用户字段未定义。我究竟做错了什么?
您是否为每个事件执行两次查询?如果你想列出所有事件并填充用户字段,那么直接去应该会更快:
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
});
我一直在使用 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正确显示了创建者的名字,但在渲染页面上,用户字段未定义。我究竟做错了什么?
您是否为每个事件执行两次查询?如果你想列出所有事件并填充用户字段,那么直接去应该会更快:
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
});