Javascript Node承诺Node mysql不允许应用程序终止
我使用Node Promise(本机实现)来链接MySQL查询 我正在使用Javascript Node承诺Node mysql不允许应用程序终止,javascript,mysql,node.js,es6-promise,Javascript,Mysql,Node.js,Es6 Promise,我使用Node Promise(本机实现)来链接MySQL查询 我正在使用节点mysql库进行mysql连接 var mysql = require('mysql'); var db = mysql.createPool({ host: 'localhost', user: 'root', password: 'root', database: 'database' }); 该函数非常简单,并返回一个承诺: function query(sql, repl)
节点mysql
库进行mysql连接
var mysql = require('mysql');
var db = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'database'
});
该函数非常简单,并返回一个承诺:
function query(sql, repl) {
return new Promise(function(resolve, reject) {
db.getConnection(function(err, connection) {
if (err)
reject(err);
else {
connection.query(sql, repl, function(err, rows) {
connection.release();
if (err)
reject(err);
else
resolve(rows);
});
}
});
});
}
但是,当我运行它时,应用程序永远不会终止
query('SELECT * FROM `subscriptions` LIMIT 5', []).then(function(rows) {
console.log(rows);
}, function(err) {
console.log('MySQL error: ' + err);
});
之后不再有代码,但节点仍然没有终止,即使承诺得到了解决
可能是因为
connection.release()
是异步的吗?我尝试直接使用池,并使用一个连接而不是池。发生这种情况是因为节点在所有连接关闭之前不会终止
替换
connection.release()
通过
connection.destroy()
节点将成功终止
答案要归功于
节点mysql
的开发人员。console.log运行?@JaromandaX,是的,它运行并输出行。这让我在不关闭MongoDB连接时发现了同样的问题。谢谢