首先,我是一个绝对的初学者,所以请温柔... 我使用mongoose模型使用express:
将一些数据存储在mongodb中var fooSchema = new mongoose.Schema({
name: String,
bars: [{bar1},{bar2},{bar3},{bar4},{bar5}]
});
然后是需要通过Id找到一个条目的路由,并将一些特定于用户的数据添加到该对象中的每个数组成员,并使用该数据呈现页面:
app.get("/foo/:id", function(req,res){
Foo.findById(req.params.id, function(err, foo){
if(req.isAuthenticated()){
foo.bars.forEach(function(bar){
Baz.find({userId: req.user._id}, function(err, baz){
bar.data = baz.somedata;
console.log("inside: " + bar.data);
});
});
}
console.log("outside: " + foo.bars);
res.render("foo", {foo: foo});
});
});
但是我的视图foo.ejs文件中没有发送该数据进行渲染。我得到foo对象,没有附加bar.data。 当我在console.log里面forEach循环它就在那里。我认为原因是渲染是在我的mongodb查询之前执行的(它是在“内部”之前的console.logs“外部”字符串。但是不知道如何避免它。