// http://127.0.0.1:3000/list/1.html
router.get('/:pid.html', function(req, res) {
var pid = req.params.pid || 1; async.parallel([
function(callback){
list_m.getListById(pid, function(result){
callback(null, result[0]);
})
},
function(callback){
list_m.getReplyById(pid, function(result){
callback(null, result);
})
},
], function(err, results){
// console.log( results );
// res.json(results);
res.render('list', { data:results });
})
});
稍微解释下
async.parallel的功能,下节我们会详细的讲解。
async.parallel([f1, f2, f3,…, fn], fb); 是f1到fn所有的异步都执行完了就会执行fb函数。这里我们是主题的详情和对主题的回复都请求完成了,就可以调用模板渲染。
// views/list.ejs<p><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回到首页</a></p>
<h1>详情</h1>
<p>标题: <%=data[0].title %></p>
<div><%=data[0].content %></div>
<div class="reply">
<h2>评论</h2>
<div class="reply_con">
<table>
<% for(var i=0, len=data[1].length; i<len; i++) { %>
<tr>
<td><%=(i+1) %></td>
<td><%=data[1][i].content %></td>
<td><%=data[1][i].createtime %></td>
</tr>
<% } %>
</table>
</div>
</div>
对主题的回复功能可以自己实现一下。
总结
写着写着就发现篇幅这么大了,而且充斥了大量的代码,需要我们细心的理解。下面给出详细的示例代码,大家可以下载学习,希望本文的内容对大家能有所帮助。
下载地址:点击这里









