应用程序不会终止于MySQL池

我正在编写一个nodejs应用程序,并希望使用连接池。

但是,下面的应用程序不会终止 – 虽然我希望它在connection.end()调用后终止。

应用程序工作得很好,如果我使用一个连接,而不是池。 我需要以某种方式终止游泳池吗?

使用的库 : https : //github.com/felixge/node-mysql
Ubuntu上的node.js版本 :0.10.4

 var mysql = require('mysql'); var pool = mysql.createPool({ host : 'example.org', user : 'myuser', password : 'youbet', database : 'notrevealingdetails', insecureAuth: true }); function getCampaignData(callback) { pool.getConnection(function(err, connection) { if(err) throw err; connection.query( 'SELECT cam.id, cam.name AS campaign_name, cam.subdomain, usr.email, usr.display_name AS user_displayname ' + 'FROM campaigns AS cam INNER JOIN users AS usr ON usr.id = cam.user_id ' + 'WHERE cam.state=2', function(err, rows) { callback(err, rows,connection); //console.log('called end()'); }); // callback function for connection.query }); // end pool.GetConnection } getCampaignData(function(err, rows, connection) { if (err) throw err; connection.end(); console.log("I expect my app to terminate"); }); 

我有同样的问题,但看看源代码https://github.com/felixge/node-mysql/blob/master/lib/Pool.js我发现,至less在目前的实施,有一个end()方法,在所有连接上调用end()。

它也接受一个callback函数,在所有连接实际结束之后(或者每当发生错误时)被调用。

 pool.end(function (err) { if (err) console.error("An error occurred: " + err); else console.log("My app terminated"); }); 

我会用

 getCampaignData(function(err, rows, connection) { if (err) throw err; connection.release(); console.log("I expect my app to terminate"); });