第三版的generic-pool问题,按照里面的example执行的代码,但是很郁闷的是代码不能运行,单步的话,也只是到resourcePromise.then(function(client)就不执行了,这是为什么那?
使用的模块地址:https://github.com/coopernurs...
全部代码如下:
var genericPool = require('generic-pool');
var DbDriver = require('mysql');
/**
* Step 1 - Create pool using a factory object
*/
const factory = {
create: function(){
return new Promise(function(resolve, reject){
var client = DbDriver.createPool({
host:'localhost',
user : 'root',
password : 'root',
database : 'world'});
client.on('connected', function(){
resolve(client)
})
})
},
destroy: function(client){
return new Promise(function(resolve){
client.on('end', function(){
resolve()
})
client.disconnect()
})
}
}
var opts = {
max: 10, // maximum size of the pool
min: 2 // minimum size of the pool
}
var myPool = genericPool.createPool(factory, opts);
/**
* Step 2 - Use pool in your code to acquire/release resources
*/
// acquire connection - Promise is resolved
// once a resource becomes available
var resourcePromise = myPool.acquire();
resourcePromise.then(function(client) {
console.log('in ');
client.query("select * from city", [], function(err,result) {
console.log(err);
console.log(result);
// return object back to pool
myPool.release(client);
});
})
.catch(function(err){
// handle error - this is generally a timeout or maxWaitingClients
// error
});
/**
* Step 3 - Drain pool during shutdown (optional)
*/
// Only call this once in your application -- at the point you want
// to shutdown and stop using this pool.
myPool.drain(function() {
myPool.clear();
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
请参照 mysql 的官方文档:https://github.com/mysqljs/mysql
resourcePromise.then 进不去说明 resolve 或 reject 没有执行到 ,这样可以定位到 factory 的 create 中的 resolve(client)没执行,那么再定位到 是不是
client.on('connected' 没执行呢 ! 接着查一下 mysql.js 的文档 是
client.connect(function(err){} 来进行数据库连接的。 所以解决方法是: