var mysql = require('mysql');
var pool = mysql.createPool({
host: 'localhost',
user: 'nodejs',
password: 'nodejs',
database: 'nodejs',
port: 3306
});
// 第一种方式
pool.getConnection(function (err, conn) {
conn.query("select * from user limit 1",function(err,rows){
// 数据处理
conn.release();
});
});
// 第二种方式
pool.query("select * from user limit 1",function(err,rows){
// 数据处理
});
这两种方式都有没有问题, 那两者有什么区别呢?
参见:https://www.npmjs.com/package...
上面NPM文档说,可以直接使用
pool.query()
,同时,又说了,当你使用完连接时,调用connection.release()
文档中也说了,
connection.release()
方法是在用完连接池中的某个连接之后,将其放回到连接池中去的操作所以,我猜测,说“直接使用
pool.query()
”,应该是自动完成了connection.release()
释放连接控制权的操作后来,我翻了一下源文件:GitHub
从190行开始,可以看到
pool.query()
调用了getConnection
方法,而且在用完后,执行了query.once('end', function() {conn.release();});
,说明前面的猜测是正确的