我尝试连接到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);
先谢谢
答案 0 :(得分:2)
您在查询执行之前(查询是异步的)提前结束响应(res.end(sql)
)。删除它,然后在查询回调中结束响应,错误应该消失。