nyx_server
Version:
Node内容发布
58 lines (51 loc) • 1.75 kB
JavaScript
var mysql = require("mysql");
var util = require("util");
var baseConnect = require("./Connection");
var Promise = require("bluebird");
function Connection(connectParams, pool) {
baseConnect.apply(this, arguments);
}
util.inherits(Connection, baseConnect);
Connection.prototype._create = function(connectParams) {
var connection = mysql.createConnection(connectParams);
//console.log("connect" , connection);
if (this.pool) {
var _self = this;
connection.on('error', function(err) {
console.log('db error', err);
if (err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
//_self.pool && _self.pool.close(_self); // lost due to either server restart, or a
_self.close(); //关闭当前链接
}
});
}
return connection;
};
Connection.prototype.query = function(sql, values) {
var self = this;
return new Promise(function(resolve, reject) {
var fn = function(err, result) {
if (err) {
console.log("query connection err", err.stack);
console.log("query connection err:" + err.code, err.stack);
if (err.fatal) {
console.log("query err.fatal")
self.close();
}
reject(err);
} else {
resolve(result);
}
};
self.connection.query(sql, values, fn);
});
};
Connection.prototype.vaild = function() {
var _self = this;
return this.query("select 1 from dual").then(function() {
return true;
}).catch(function(err) {
return false;
});
};
module.exports = Connection;