Javascript Node承诺Node 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)

我使用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) {
    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连接时发现了同样的问题。谢谢