无法将 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
});