第二次访问Mysql数据库时出错
当我启动服务器后发送第一个请求时,一切正常。 但在更新页面(重新查询)后,您会收到一个错误:第二次访问Mysql数据库时出错,mysql,node.js,express,Mysql,Node.js,Express,当我启动服务器后发送第一个请求时,一切正常。 但在更新页面(重新查询)后,您会收到一个错误: app.get('/images', function(req, res, next) { if (connection.state === 'disconnected'){ connection.connect();} else { } var DATABASE='nodejsImage'; var resu
app.get('/images', function(req, res, next) {
if (connection.state === 'disconnected'){
connection.connect();}
else {
}
var DATABASE='nodejsImage';
var results;
connection.query('use ' + DATABASE);
connection.query('SELECT `id`, `imagename`, `filename`, `speed`, `move` FROM `images` WHERE 1',
function (err, results, fields) {
if (err) return console.log("Error test") //throw err;
else {
console.log('Images list');
console.log('----------------------------------');
for (var i in results) {
var gadget = results[i];
console.log(gadget.id +': '+ gadget.imagename+': '+gadget.speed+': '+gadget.move);
}
res.render('imagelist', { title: 'Imagelist',listImages:results });
}
});
connection.end(); //разобраться с ошибкой позже!!!
});
错误消息:
events.js:165
投掷者;//未处理的“错误”事件
^
错误:调用quit后无法将握手排队。
at Protocol.\u validateEnqueue(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Protocol\Protocol.js:204:16)
at Protocol.\u排队(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Protocol\Protocol.js:139:13)
在Protocol.handshake(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Protocol\Protocol.js:52:23)
在Connection.connect(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Connection.js:118:18)
在E:\Dropbox\untitled5-upload-3\untitled5\app.js:48:16
在Layer.handle[作为handle\u请求](E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\express\lib\router\Layer.js:95:5)
下一步(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\express\lib\router\route.js:137:13)
在Route.dispatch(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\express\lib\router\Route.js:112:3)
在Layer.handle[作为handle\u请求](E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\express\lib\router\Layer.js:95:5)
在E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\express\lib\router\index.js:281:22
在以下位置发出“错误”事件:
连接时。\u handleprotocolorr(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Connection.js:425:8)
在Protocol.emit(events.js:180:13)
at Protocol.\u delegateError(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\Protocol\Protocol.js:392:10)
握手时。(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\protocol\protocol.js:221:10)
在Handshake.emit(events.js:180:13)
在Handshake.Sequence.end(E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\protocol\sequences\Sequence.js:83:12)
在E:\Dropbox\untitled5-upload-3\untitled5\node\u modules\mysql\lib\protocol\protocol.js:225:14
在进程中。_tick回调(内部/process/next_tick.js:112:11)
添加通行证项目很简单
查看
var imageList = [];
// Connect to MySQL database.
var connection = getMySQLConnection();
connection.connect();
// Do the query to get data.
connection.query('SELECT * FROM images', function(err, rows, fields) {
if (err) {
res.status(500).json({"status_code": 500,"status_message": "internal server error"});
} else {
// Loop check on each row
for (var i = 0; i < rows.length; i++) {
// Create an object to save current row's data
var person = {
'id':rows[i].id,
'imagename':rows[i].imagename,
'filename':rows[i].filename,
'speed':rows[i].speed,
'move':rows[i].move
}
// Add object into array
imageList.push(person);
}
// Render index.pug page using array
res.render('imagelist', { title: 'Imagelist',listImages:imageList });
}
});
// Close the MySQL connection
connection.end();
var-imageList=[];
//连接到MySQL数据库。
var connection=getMySQLConnection();
connection.connect();
//执行查询以获取数据。
connection.query('SELECT*FROM images',函数(err、行、字段){
如果(错误){
json({“状态代码”:500,“状态消息”:“内部服务器错误”});
}否则{
//每行循环检查
对于(变量i=0;i
您收到一个错误
。。。出现了什么错误?为什么使用WHERE
子句?我更新了问题。您似乎没有等待connection.connect()
事件完成。它可能是异步的,因此您可能需要使用回调来执行某些操作,或者等待承诺来检查示例代码中的第一个if/else。为什么其他的都是空的?这就是你的意图吗?
var imageList = [];
// Connect to MySQL database.
var connection = getMySQLConnection();
connection.connect();
// Do the query to get data.
connection.query('SELECT * FROM images', function(err, rows, fields) {
if (err) {
res.status(500).json({"status_code": 500,"status_message": "internal server error"});
} else {
// Loop check on each row
for (var i = 0; i < rows.length; i++) {
// Create an object to save current row's data
var person = {
'id':rows[i].id,
'imagename':rows[i].imagename,
'filename':rows[i].filename,
'speed':rows[i].speed,
'move':rows[i].move
}
// Add object into array
imageList.push(person);
}
// Render index.pug page using array
res.render('imagelist', { title: 'Imagelist',listImages:imageList });
}
});
// Close the MySQL connection
connection.end();