简单的服务器处理路由并给出错误nodejs-mysql

简单的服务器处理路由并给出错误nodejs-mysql,mysql,node.js,routes,Mysql,Node.js,Routes,我正在尝试使用nodejs编写一个简单的服务器,并让服务器根据路由发回不同的查询和/或自定义头/响应。但是,在getUsers()函数中,错误会不断出现,并将“错误查询”打印到控制台,而不是打印电子邮件行。我知道服务器连接良好,因为我可以在使用db时返回一个查询,并且只使用第二个示例返回一个带有createConnection的查询。非常感谢您对发现错误的任何帮助。谢谢 我想做的是: var http = require('http'); var mysql = require('mysql')

我正在尝试使用nodejs编写一个简单的服务器,并让服务器根据路由发回不同的查询和/或自定义头/响应。但是,在getUsers()函数中,错误会不断出现,并将“错误查询”打印到控制台,而不是打印电子邮件行。我知道服务器连接良好,因为我可以在使用db时返回一个查询,并且只使用第二个示例返回一个带有createConnection的查询。非常感谢您对发现错误的任何帮助。谢谢

我想做的是:

var http = require('http');
var mysql = require('mysql');
var url = require('url');
var util = require('util');

var db = mysql.createConnection({
  host     : "*********",
  user     : "*********",
  password : "*********",
  port     : '****',
  database : '*********' 
});

db.connect(function(err) {
  console.log('connected');
   if (err)
        console.error('Error connecting to db' + err.stack);
});

function getUsers() {
db.query('SELECT * FROM users', function(err, rows, fields) {
  if (err)
    // changed console.error('Error querying');
    console.error(err);
  if (rows)
    console.log('Rows not null');
  for (var i in rows) {
    console.log(rows[i].email)
  }
});
}

var server = http.createServer(function(req, res) {
  console.log(req.url); 
  if (req.url == '/signup') {
    console.log("User signing up");
  } else if (req.url == '/signin') {
    console.log("User signing in");
  } else if (req.url == '/new') {
    console.log("User request new game");
getUsers();
  }
  //res.writeHead(200);
  //res.end('Hello Http');
});

server.listen(3000);

// changed and commented out db.end();
查询数据库有什么作用:

var connection = mysql.createConnection({
  host     : "********",
  user     : "********",
  password : "********",
  port     : '****',
  database : '********' 
});

connection.connect();

var queryString = 'SELECT * FROM users';

connection.query(queryString, function(err, rows, fields) {
    if (err) throw err;
        for (var i in rows) {
            console.log('Users: ', rows[i].email);
        }
});

connection.end();

代码已随更改而更新,问题是我正在关闭数据库。按照注释中的建议更改错误日志后,这就是收到的错误

{ [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false } 
然后我评论了这篇文章

db.end()
并且查询返回的结果很好


谢谢您的帮助。

为什么不将错误传递到
console.Error()
以了解问题所在,而不是
“错误查询”
。这就是它的目的。^同意,您是这里缺少调试输出的原因。记录错误,而不是简单的错误当我将行更改为console.error()时,没有输出任何内容。另外,行的console.log没有被命中,这表明查询有问题,我知道没有问题,因为我可以使用第二种方法将查询返回到控制台。有什么想法吗?我想当@BenFortune说要传递错误时,他的意思是写:
console.error(err)
。是的,这很有帮助。错误是:{[error:cannotenqueue Query after invoking quit.]code:'PROTOCOL_enqueue_after_quit',fatal:false}有一次,我注释掉了db.end();一切正常。谢谢你的帮助。我很感激。