我正在创建一个博客网站,并尝试实现一项功能,以便用户可以报告具体的评论。我们的想法是,用户会点击报告'在特定评论下方链接并转到新页面,该页面将预先填充他们报告的评论和评论所属博客的标题。
到目前为止,我写了以下路线:
router.get('/blogs/:blog_id/comments/:comment_id/report', function(req, res) {
// find comment
Comment.findById(req.params.comment_id, function(err, foundComment){
if(err){
res.redirect('/blogs');
} else {
res.render('report-comment', {comment: foundComment});
}
});
});
这已成功生成我的报告评论页面,然后我可以从报告评论页面使用eps<%= comment.text%>填充评论。但是,我无法在这条路线中解决如何通过嵌入评论的博客详细信息。在我的报告评论表单中,我希望能够使用<%= blog.title%>填充博客标题。但在我的路线中,我是否通过了博客信息?
答案 0 :(得分:0)
使用req
对象将信息从一个中间件功能传递到下一个中间件功能。您还应指定单独的中间件函数来检索不同的数据,然后最终呈现它。例如您可以修改代码:
router.get('/blogs/:blog_id/comments/:comment_id/report',
function( req, res, next ){
// this is first middleware and fetches comment data
Comment.findById(req.params.comment_id, function(err, foundComment){
if(err){
res.redirect('/blogs');
}else{
req.comment = foundComment;
next();
}
});//findById()
},
function(req, res, next){
// this is second middleware that fetches blog data
Blog.findById(req.params.blog_id, function(err, foundBlog){
if(err){
res.redirect('/blogs');
} else {
req.blog = foundBlog;
next();
}
});
},
function( req, res ){
// this is third and final middleware that renders the page
var pageInfo = {};
pageInfo.comment = req.comment;
pageInfo.blog = req.blog;
res.render("/report-template", pageInfo);
});
现在,在report-template
文件中,您可以将这些变量用作comment
和blog
。