我正在创建一个基于expressjs的MVC,以便学习快递。我在模型和视图之间遇到了麻烦。 Git仓库存在here。
我想显示博客帖子列表。我正在使用自定义的jasmine视图,与mongoose和expressjs一起使用。我不知道如何从查询中返回帖子列表(find({})并将该对象转移到视图中,或者在我拥有它们时使用jasmine中的那些帖子。
我在视图中访问此信息的最佳方法是通过res.locals,但似乎无效。
// read
app.get('/', function(req, res){
Blog.find({},function(err, records){
res.locals.posts = records
// res.send(records);
records.forEach(function(record){
console.log(record["body"])
});
});
res.render("home.jade", {online:req.online.length + ' users online', posts:VARIABLE_I_AM_UNCLEAR_ABOUT});
});
我可以在我的console.log中看到正文,所以很明显我有json博客帖子。此外,我可以使用res.send(记录)返回JSON。我想访问这些记录,所以我可以用茉莉花在我的视图中设置那些样式。
答案 0 :(得分:2)
只需将render
移至您尝试send
的位置即可:
app.get('/', function(req, res){
Blog.find({},function(err, records){
res.render("home.jade", {
online : req.online.length + ' users online',
posts : records
});
});
});
Blog.find()
是异步的,因此只有在从数据库发回结果时才会调用回调函数。在您的原始情况下,您在没有先等待结果的情况下渲染模板。