我正在使用Node Promise(本机实现)链接MySQL查询。
我正在使用node-mysql
库进行MySQL连接。
var mysql = require('mysql');
var db = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'database'
});
该功能非常简单,并返回Promise:
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()
是异步的吗?我尝试直接使用池并使用一个连接而不是池。
答案 0 :(得分:2)
这是因为Node在所有连接都关闭之前不会终止。
替换
connection.release()
通过
connection.destroy()
和Node将成功终止。
感谢node-mysql
的开发人员提供答案。