前言
具体代码发布在github了,不同分支代表在不同阶段的版本
我的github
createConnection vs createPool
createConnection方法创建连接对象
正式的说法是 使用createConnection方法创建一个表示与mysql数据库服务器之间连接的connection对象-
createPool连接池
在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。
这里贴出promise封装的连接池代码 了解更多?
/**
* promise版 sql连接池
* jtchen 2018/3/27
*/
const mysql = require('mysql');
const pool = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: '1qaz@WSX',
port: 3306,
database: 'app_blog'
})
exports.query = (sql, params = []) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) {
return reject(err);
}
connection.query(sql, params, (err, result) => {
//释放连接
connection.release();
if (err) {
return reject(err);
}
resolve(result);
});
});
});
};
这里简单介绍几个关键的方法
//createPool
var pool = mysql.createPool(optioins);
options参数包含createConnection方法中可以使用的各种属性
//getConnection
//err为错误对象,connection为获取到的连接对象。
从连接池中取出连接。
pool.getConnection(function(err,connection))
//release
release方法将其归还到连接池中 connection.release();
//destroy
当一个连接不再需要使用且需要从连接池中移除时用connection对象的destroy方法。
connection.destroy();
连接移除后,连接池中的连接数减一
//end
当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池。pool.end();