node.js - nodejs连接mysql报错

查看:136
本文介绍了node.js - nodejs连接mysql报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

输入帐号,密码,从mysql比对,正确的话定向到home页.
database.js:

var mysql = require('mysql');
var config = require('../config/config');

var pool = mysql.createPool(config.mysql_dev);

var query=function(sql,callback){  
    pool.getConnection(function(err,conn){  
        if(err) console.log("POOL ==> " + err);
        else{  
            conn.query(sql,function(qerr,vals,fields){  
                //释放连接  
                conn.release();
                

                //事件驱动回调  
                callback(qerr,vals,fields);  
               
            });  
        }  
    });  
};  
  
module.exports=query;

index.js:

router.post('/login',function(req,res){
    
    var query = require('../modules/database');
    query("select * from managers where ManagerID =10001",function(err,vals,fields){ 
          
          if(req.body.password==="admin")
        {
        res.redirect('/home');
        
        }
        res.send('ID或密码错误!');

    });
    
});

总是报错:

 /opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/Parser.js:77
        throw err; // Rethrow non-MySQL errors
        ^

Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
    at ServerResponse.header (/opt/workspace/project/nodejs-demo/node_modules/express/lib/response.js:718:10)
    at ServerResponse.send (/opt/workspace/project/nodejs-demo/node_modules/express/lib/response.js:163:12)
    at /opt/workspace/project/nodejs-demo/routes/index.js:40:7
    at Query._callback (/opt/workspace/project/nodejs-demo/modules/database.js:16:17)
    at Query.Sequence.end (/opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
    at Query._handleFinalResultPacket (/opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
    at Query.EofPacket (/opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
    at Protocol._parsePacket (/opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/Protocol.js:280:23)
    at Parser.write (/opt/workspace/project/nodejs-demo/node_modules/mysql/lib/protocol/Parser.js:73:12)
        

不知道哪里出了问题?如果代码哪里不清楚我可以再追加。

解决方案

redirect之后就不要send了

router.post('/login',function(req,res){
    
    var query = require('../modules/database');
    query("select * from managers where ManagerID =10001",function(err,vals,fields){ 
          
          if(req.body.password==="admin")
        {
        res.redirect('/home');
        return; ///这里加个return
        }
        res.send('ID或密码错误!');

    });
    
});

这篇关于node.js - nodejs连接mysql报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆