我是Javascript和node.js的新手,我在使用它时遇到了一些麻烦。据我所知,这应该产生预期的结果,但我有一些相当奇怪的输出(参见评论)。
function getHistoryFromDb() {
var rows=1;
pool.getConnection(function (err, connection) {
// rows = 1
console.log(rows);
connection.query('SELECT * FROM messages', function (error, results, fields) {
connection.release();
if (error) throw error;
// rows = 1
rows = results;
// rows = the expected output (array of objects)
});
});
// rows = 1
return rows;
}
感谢您的帮助!
编辑:看起来这更像是一个与异步执行相关联的问题 EDIT2:问题解决了,不得不使用回调而不是尝试使用return ...
答案 0 :(得分:0)
function getHistoryFromDb(callback) {
var rows=1;
pool.getConnection(function (err, connection) {
// rows = 1
console.log(rows);
connection.query('SELECT * FROM messages', function (error, results, fields) {
if (error) throw error;
// rows = 1
rows = results;
connection.release();
callback(null, rows);
});
});
}
node.js是异步的,因此您在执行db查询之前返回行。你需要使用回调
function handleDBQuery(err, result) {
if (err) {
return;
}
// do something with result
}
getHistoryFromDb(handleDBQuery);