我试图连接到mysql数据库,运行一个查询,然后设置一个cookie只有如果密码是正确的(我知道我不应该使用md5,这只是一个测试项目)。这是我写的代码,当我执行并向这个请求发出请求时,它说Error: Can't set headers after they are sent.
但我没有发送任何响应,直到我打电话给res.cookie()
,我不知道什么是错的:
email=req.params.email;
password=req.params.password;
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'nishchal11',
database : 'venturesity'
});
connection.connect();
sql="SELECT * FROM user WHERE user_email="+connection.escape(email)+" AND password=md5("+connection.escape(password)+");";
connection.query(sql,function (err,rows,fields) {
res.cookie("email",email);
if(!err){
if(rows.length==1){
//res.cookie("password",rows[0].pass);
console.log(rows[0].pass);
}else{
console.log("wrong pass");
}
}else{
console.log("Error");
}
});
res.end(sql);
Thanks in advanced
您在查询执行之前(查询是异步的)提前结束响应(res.end(sql)
)。删除它并在查询回调中结束响应,错误应该会消失。