我正在使用mysql连接池来创建连接。代码如下所示。
var pool = mysql.createPool(connectionProps);
通过访问池,即使连接不成功,我也会得到一个Object。我通过启动和停止mysql来检查它。
我想要的是,我需要检查连接是否成功如下。
if(pool){ // mysql is started && connected successfully.
console.log('Connection Success');
doSomething();
}else{
console.log('Cant connect to db, Check ur db connection');
}
我想要这样的东西。那么我们怎样才能用mysql池对象做到这一点。有人可以帮助我吗?
非常感谢
答案 0 :(得分:2)
通常你会做一些事情,比如从db中选择任意一些东西,如果失败就会发现错误。 docs。
中的示例const pool = mysql.createPool(connectionProps);
pool.query('SELECT 1 + 1 AS solution', (error, results, fields) => {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
答案 1 :(得分:0)
var pool = mysql.createPool(config.db);
exports.connection = {
query: function () {
var queryArgs = Array.prototype.slice.call(arguments),
events = [],
eventNameIndex = {};
pool.getConnection(function (err, conn) {
if (err) {
if (eventNameIndex.error) {
eventNameIndex.error();
}
}
if (conn) {
var q = conn.query.apply(conn, queryArgs);
q.on('end', function () {
conn.release();
});
events.forEach(function (args) {
q.on.apply(q, args);
});
}
});
return {
on: function (eventName, callback) {
events.push(Array.prototype.slice.call(arguments));
eventNameIndex[eventName] = callback;
return this;
}
};
}
};
并要求使用它:
db.connection.query("SELECT * FROM `table` WHERE `id` = ? ", row_id)
.on('result', function (row) {
setData(row);
})
.on('error', function (err) {
callback({error: true, err: err});
});