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