Bluebird,node-mysql,pooling和disposing

时间:2016-08-12 02:50:43

标签: node.js bluebird node-mysql

目前正尝试使用promises和pooling实现一种不同的方法来连接我的数据库。这就是我现在所拥有的:

// databaseConnection.js
var configDB = require('./database.js');
var mysql = require('promise-mysql');

var pool = mysql.createPool(configDB.connectionData);

function getSqlConnection() {
    return pool.getConnection(configDB.connectionData).disposer(function(connection) {
        connection.release();
    });
}

module.exports = getSqlConnection;

然后我使用这样的查询:

#sqlQuery.js
var Promise = require("bluebird");
var getSqlConnection = require('./databaseConnection')
Promise.using(getSqlConnection(), function(connection) {
    return connection.query("SELECT * FROM EXAMPLE_TABLE").then(function(row) {
        return process(rows);
    }
}

我正在使用this库,它只是node-mysql包裹着BlueBird的承诺。有了这个,我想利用BlueBird的disposingusing功能,所以我只能在需要的时候连接到数据库。

目前虽然我从Connection.js的mysql收到错误:cb is not a function。基于this问题,我对我做错了什么有点了解,但我不确定如何使用BlueBird的dispose / using范例。提前感谢任何有帮助的人!

1 个答案:

答案 0 :(得分:0)

我非常缺乏监督。以下一行:

return pool.getConnection(configDB.connectionData).disposer...

应该是:

return pool.getConnection().disposer...

很抱歉。仍然得到一个错误connection.release不是一个奇怪的函数,但至少我可以继续进行调试。