0

我正在努力在 expressjs 之上创建一个 MVC,以便学习 express。我在模型和视图之间遇到问题。Git 存储库存在于此处

我想显示博客文章列表。我正在使用自定义 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(records) 返回 JSON。我想访问这些记录,所以我可以用 jasmine 在我的视图中设置它们的样式。

4

1 回答 1

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()是异步的,所以只有当结果从数据库发回时才会调用回调函数。在您最初的情况下,您无需先等待结果就渲染了模板。

于 2013-05-16T06:10:38.517 回答