在nodejs上结束mysql池连接的位置?

时间:2017-07-24 20:48:52

标签: mysql node.js pool

我在Nodejs上使用MySQL。我正在使用mysql pool创建连接:

Var mysqk = require ('mysql');
Var pool = mysql.createPool ({my configs});

我的问题是: 应用程序中的哪个位置我会使用文档中报告的pool.end()

例如:在我的www文件中,我创建了一个代码来释放其他内容,正如我在de code中指出的那样。我应该在那里使用pool.end()吗?

var app     = require('../app');
var debug   = require('debug')('cancela:server');
var http    = require('http');
var port = normalizePort(process.env.PORT || '4000');
app.set('port', port);
var server = http.createServer(app);

// my app codes...
..
.
.

process.once('SIGTERM', end);
process.once('SIGINT', end);

function end() {

    server.close(function(err){

    if(err) throw err();

        // Should I end the Pool connection here?  <<<<<<===================================
        // pool.end(function (err) {
        //   // all connections in the pool have ended 
        // });

        console.log('Server endded!');        

        /* exit gracefully */
        process.exit();
    });
}

1 个答案:

答案 0 :(得分:0)

有时您想要出于某种原因手动释放连接池,以便在最终重新创建池之前使用pool.end()

大多数情况下,当服务器即将关闭时,您希望将其释放,以便您可以按照自己的想法进行操作。注意函数调用process.exit()的位置。必须在连接释放后调用它,否则池将无法完成释放。

function end() {
    server.close(function (err) {
        if (err) throw err;
        console.log('Server endded!');

        pool.end(function (err) {
            if (err) throw err;

            process.exit();
        });
    });
}