Javascript 要执行的Connection.query
非常确定这是一个非常noobish node.js/callback的问题,但我似乎找不到合适的代码来运行它 这就是我调用我的Javascript 要执行的Connection.query,javascript,node.js,node-mysql,Javascript,Node.js,Node Mysql,非常确定这是一个非常noobish node.js/callback的问题,但我似乎找不到合适的代码来运行它 这就是我调用我的节点mysql代码的方式: var utils = require('../../config/database/utils'); exports.getResults = function(callback) { var query = "SELECT * FROM my_table"; utils.exec(query, null, function
节点mysql
代码的方式:
var utils = require('../../config/database/utils');
exports.getResults = function(callback) {
var query = "SELECT * FROM my_table";
utils.exec(query, null, function(err, results){
if(err){
console.log(err);
callback(true);
return;
}
console.log(results);
callback(false, results);
});
};
接下来是utils文件,我无法在其中运行代码
var pool = require('./connection');
module.exports = {
getDBConnection: function() {
pool.getConnection(function(err, connection){
if(err){
console.log(err);
return;
}
return connection;
});
},
endDBConnection: function(connection) {
connection.end(function (err) {
if(err) {
console.log(err);
callback(true);
return;
}
});
},
exec: function(query, data, callback) {
console.log(query);
this.getDBConnection(function(err, connection){
if(err){
console.log('error');
}
console.log(connection);
connection.query(query, data, function(err, results) {
if(err) {
callback(err);
}
callback(false, results);
});
this.endDBConnection(connection);
});
}
}
由于console.log(query)
记录了查询,因此exec部分的代码变得正常。但是在那之后,代码没有运行,console.log(连接)
没有显示任何内容,当然,连接.query
也没有运行
我不知道为什么会发生这种情况。在回调中返回值是没有意义的。您需要传入一个回调,该回调将使用要返回的值进行调用:
getDBConnection: function(callback) {
pool.getConnection(function(err, connection){
if(err){
console.log(err);
return callback(err);
}
callback(null, connection);
});
},
您还应该使用connection.release()
而不是connection.end()
,因为您使用的是池:
endDBConnection: function(connection) {
connection.release();
},
在exec()
中,此的错误。它应该是这样的:
exec: function(query, data, callback) {
console.log(query);
var self = this;
this.getDBConnection(function(err, connection){
if(err){
console.log('error');
return callback(err);
}
console.log(connection);
connection.query(query, data, function(err, results) {
self.endDBConnection(connection);
if(err) {
return callback(err);
}
callback(null, results);
});
});
}
你让我的星期天更快乐了。非常感谢您的回答,也感谢您澄清了某些要点。