无法将mongo人口传递到ejs页面

时间:2016-11-14 14:14:59

标签: node.js mongoose ejs

我一直在使用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正确显示了创建者的名称,但在呈现页面上,用户字段未定义。我究竟做错了什么?

1 个答案:

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