if(req.session.user){
var title = req.query.title,
content = req.query.content,
uid = req.session.user.uid,
createtime = parseInt(Date.now()/1000);
var params = {uid:uid, title:title, content:content, createtime:createtime};
list_m.addTopic(params, function(result){
// console.log(result);
if(result.affectedRows){
res.json({code:0, msg:'添加成功', data:{url:'/list/'+result.insertId+'.html', title:title, author:req.session.user.username, createtime:createtime}});
}else{
res.json({code:2, msg:'添加失败,请重新尝试'})
}
});
}else{
res.json({code:1, msg:'您还未登录'})
}
})
这里用到了
list_m.addTopic,因此需要在models/list.js中添加 addTopic 方法:
// models/list.js/*
添加主题
uid, title, content, createtime
*/
addTopic : function(params, cb){
pool.getConnection(function(err, connection){
if(err) throw err;
connection.query('INSERT INTO `list` SET ?', params, function(err, result){
if(err) throw err;
cb(result);
connection.release();
// 接下来connection已经无法使用,它已经被返回到连接池中
})
});
}
4.3 详情页
在首页列表中,可以看到,我们将详情页的链接设置为了/list/1.html的方式,也可以设置成其他的方式(比如 /list?pid=1 等),只要设置好路由就行。
// routes/list.js// http://127.0.0.1:3000/list/1.html
router.get('/:pid.html', function(req, res) {
var pid = req.params.pid || 1;
console.log(pid);
});
在详情页中需要获取到这个主题的详细信息和对这个主题的回复,因此在list_m中:
// models/list.js// 根据id查询主题的详情信息
getListById : function(id, cb){
pool.getConnection(function(err, connection){
if(err) throw err;
connection.query('SELECT * FROM `list` WHERE `id`=?', [id], function(err, result){
if(err) throw err;
cb(result);
connection.release();
// 接下来connection已经无法使用,它已经被返回到连接池中
})
});
},
// 某主题的回复
getReplyById : function(pid, cb){
pool.getConnection(function(err, connection){
if(err) throw err;
connection.query('SELECT * FROM `reply` WHERE `pid`=?', [pid], function(err, result){
if(err) throw err;
cb(result);
connection.release();
// 接下来connection已经无法使用,它已经被返回到连接池中
})
});
}
然后在路由中进行调用,这里使用async简单的控制了下两个异步的流程问题:









