Node.js Mysql节点池-释放节点中的连接错误和单例

Node.js Mysql节点池-释放节点中的连接错误和单例,node.js,express,node-mysql,Node.js,Express,Node Mysql,configuration.js var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 10, host : 'localhost', user : 'root', password : '', database : 'test' }); pool.getConnection( f

configuration.js

var mysql = require('mysql');
var pool  = mysql.createPool({
    connectionLimit : 10,
    host            : 'localhost',
    user            : 'root',
    password        : '',
    database        : 'test'
});

pool.getConnection( function(err, connection) {
    if (err) console.error('error connecting: ' + err.stack);
     return;
});
module.exports = pool;
user.js模型文件

var async = require("async");
var homePage = function HomePage( user_id ) {   
    this.user_id = user_id;
    this.db   = require('../config/configuration');
}
homePage.prototype.getCourse = function( callback ){
    var self = this;
    self.db.query(' my sql query ', [ self.user_id ], function (error, results, fields) {
        self.db.release();
        callback(err,results);
    });
};          
我已经在这里导出了我的db连接,并且在每个模型文件中都需要该模块(configuration.js)。我假设它每次都会从以下位置加载相同的db连接: 如果require('foo')解析为同一个文件,则每次调用require都会返回完全相同的对象

由于这是我第一次用JS和异步编程进行编码,我对一些事情感到困惑。我想为我的db文件加载一个类似于单例模式的配置文件。我的方法正确吗

当我执行-self.db.release()时,我假设我正在释放回池的连接。但它给出了一个错误,我无法找出它,因为其他一切都正常工作。错误是-

        self.db.release() is not a function 
如果我评论这句话,它的工作很好。是否有一种方法可以查看此版本返回的内容,因为它将有助于调试


此外,我的方法是正确的

js返回一个池,而不是连接本身。池没有
release
方法。要使其正常工作,您应该从池中获取一个连接,并在连接上运行查询-
self.db.getConnection(function(err,connection){connection.query()}
,然后在
connection.query
回调中关闭连接,调用
connection.release()
@tiblu这很有帮助。谢谢。我应该仔细阅读文档。你能就我的方法和任何改进提出建议吗?我认为你的方法没有问题。我们可以通过几种不同的方式实现相同的结果,但最重要的是解决问题,感觉良好。玩得开心!