如何在 node.js 中的模块之间共享连接池?
How to share connection pool between modules in node.js?
我对如何在 node.js 模块中正确实施 postgres 连接池知之甚少。
我的问题是:当我在每个需要连接到 pg 的模块中创建新池时,是否有问题?
有没有办法为整个应用程序全局创建池?
谢谢。
在文件中定义池说 pgpool.js
var pg = require('pg');
var pool;
var config = {
user: 'foo',
database: 'my_db',
password: 'secret',
port: 5432,
max: 10,
idleTimeoutMillis: 30000,
};
module.exports = {
getPool: function () {
if (pool) return pool; // if it is already there, grab it here
pool = new pg.Pool(config);
return pool;
};
这样使用:
var db = require('./a/path/to/pgpool.js');
var pool = db.getPool();
我建议不要导出池,而是导出一个提供到它的连接的函数。使用 promise-mysql
var mysql = require('promise-mysql');
var connectionPool = mysql.createPool({
host : "127.0.0.1",
user : '******',
password : '******',
database : '******',
port : '3306'
});
module.exports={
getConnection: function(){
return new Promise(function(resolve,reject){
connectionPool.getConnection().then(function(connection){
resolve(connection);
}).catch(function(error){
reject(error);
});
});
}
}
我做了一个simple blog post about MySQL pool sharing,你可以在这里阅读更多
我对如何在 node.js 模块中正确实施 postgres 连接池知之甚少。
我的问题是:当我在每个需要连接到 pg 的模块中创建新池时,是否有问题?
有没有办法为整个应用程序全局创建池?
谢谢。
在文件中定义池说 pgpool.js
var pg = require('pg');
var pool;
var config = {
user: 'foo',
database: 'my_db',
password: 'secret',
port: 5432,
max: 10,
idleTimeoutMillis: 30000,
};
module.exports = {
getPool: function () {
if (pool) return pool; // if it is already there, grab it here
pool = new pg.Pool(config);
return pool;
};
这样使用:
var db = require('./a/path/to/pgpool.js');
var pool = db.getPool();
我建议不要导出池,而是导出一个提供到它的连接的函数。使用 promise-mysql
var mysql = require('promise-mysql');
var connectionPool = mysql.createPool({
host : "127.0.0.1",
user : '******',
password : '******',
database : '******',
port : '3306'
});
module.exports={
getConnection: function(){
return new Promise(function(resolve,reject){
connectionPool.getConnection().then(function(connection){
resolve(connection);
}).catch(function(error){
reject(error);
});
});
}
}
我做了一个simple blog post about MySQL pool sharing,你可以在这里阅读更多