处理MySql池和nodejs

时间:2014-09-22 10:16:00

标签: mysql node.js connection-pooling node-mysql

我运行一个用NodeJS / EXPRESS编写的Web服务器来处理MySQL数据库。 为了提高效率,我使用了node-mysql的池化机制。

我仍然会遇到一些问题: - 连接丢失 - 无法释放已释放的连接 - 没有发布未定义的

根据请求,可以使用各种代码模式来获取数据并释放连接:

1 /标准回调......,function(err, rows){...} - 我可能理解,释放应该在回调之前完成?请确认我! - 我甚至可以在回拨函数的第一行使用该版本吗? (因为在各种回调的情况下我可能有很多案例。

2 /有事件 - 我在.on('error').on('end')两个事件中都放了一个connection.release。够了吗 ? - 如果在第10行调用错误会发生什么。这两个事件都会被调用吗?我想不是,但我遇到了一些问题(可以,不能发布已经发布的连接),代码如下:

   pool.getConnection(function(err, mysqlConnection) {

        if (err != null) {
            console.log(err);
        }
        else {

            mysqlConnection.query('USE table');

            var xs = new Array();

            if (selectedB === 'B') {
                if (selectedC === 'C') {

                    var queryCmd = "SELECT DISTINCT nom FROM x WHERE a ='" + selectedA + "'";
                    var query = mysqlConnection.query(queryCmd);

                    query
                    // ERROR
                    .on('error', function(err) {
                        mysqlConnection.release();
                    })
                    // RESULT
                    .on('result', function(row) {
                        mysqlConnection.pause();
                        var x = row['nom'];
                        xs.push(x);
                        mysqlConnection.resume();
                    })
                    // END
                    .on('end', function() {
                        mysqlConnection.release();
                        callback(xs);
                    })

                }
                else {
                    mysqlConnection.release();
                    callback([]);
                }
            }
            else {
                mysqlConnection.release();
                callback([]);
            }
        }

    });

3 /返回 - 返回前致电释放!

然后,有一些关于标准连接的错误处理的片段,我们应该怎么做连接池?因为以防万一,它会使服务器崩溃!

先谢谢你的建议。这肯定会对我有很大的帮助!

0 个答案:

没有答案