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);
});
};
我已经在这里导出了我的数据库连接,并且我在每个模型文件中都需要该模块(configuration.js)。我假设它每次都会从Node.js docs加载相同的数据库连接: 每次调用require(' foo')都将获得完全相同的返回对象,如果它将解析为同一个文件。
由于这是我第一次使用JS和异步编程编写代码,因此我对一些事情感到困惑。我将加载相同的配置文件,因为我希望我的db文件具有单例类型模式。我的方法是否正确?
当我这样做时 - self.db.release()我假设我正在释放一个回到游泳池的连接。但它给出了一个错误,我无法弄明白,因为其他一切正常。错误是 -
self.db.release() is not a function
如果我对此行发表评论,它的工作正常。有没有办法看到这个版本正在返回什么,因为它将有助于调试。
此外,我的方法是正确的。