求助帖:链接MySQL提示Connection already released。
登录的时候如果用户名密码错误就没事,如果正确就报错。代码如下: user.js: //根据用户名得到用户信息 User.getUserByUserName = function getUserNumByName(username, callback) {
var getUserByUserName_Sql = "SELECT * FROM userinfo WHERE username = ?";
connection.query(getUserByUserName_Sql, [username], function (err, result) {
if (err) {
console.log("getUserByUserName Error: " + err.message);
return;
}
connection.release();
console.log("invoked[getUserByUserName]");
callback(err,result);
});
};
login.js:
User = require('../models/user.js'),
router.post('/', function(req, res) {
var userName = req.body['txtUserName'],
userPwd = req.body['txtUserPwd'],
isRem = req.body['chbRem'],
md5 = crypto.createHash('md5');
User.getUserByUserName(userName, function (err, results) {
if(results == '')
{
res.locals.error = '用户不存在';
res.render('login',{title:TITLE_LOGIN});
return;
}
userPwd = md5.update(userPwd).digest('hex');
if(results[0].UserName != userName || results[0].UserPass != userPwd)
{
res.locals.error = '用户名或密码有误';
res.render('login',{title:TITLE_LOGIN});
console.log(1);
return;
}
else
{
if(isRem)
{
res.cookie('islogin', userName, { maxAge: 60000 });
}
res.locals.username = userName;
req.session.username = res.locals.username;
console.log(req.session.username);
res.redirect('/');
return;
}
});
});
5 回复
你每次都要重新申请connection才符合正确的设计逻辑。 给你个封装方法,不需要手动release
function once(sql,cb){
pool.getConnection(function(err,con){
if(!con || err){
cb(err,null)
}else{
con.query(sql,function(err,result){
con.release();
cb(err,result);
})
}
});
}
@MiguelValentine 谢谢你的回答,我刚学Node,有点儿看不懂,请问在node链接数据库这里有什么可以参考的资料吗
@bykege 参考node_modules/模块名/readme.md 一般都很全
@MiguelValentine 天啊,像无字天书一样 /难过
@MiguelValentine 原来是要用专业工具 学习了 谢谢你