如何在node.js中的模块之间共享连接池?

Mar*_*rer 4 postgresql connection-pooling node.js pg node-modules

我对如何在node.js模块中正确实现postgres连接池知之甚少.

我的问题是:当我在需要连接到pg的每个模块中创建新池时,它是否有问题?

有没有办法为整个应用程序全局创建池?

谢谢.

s-h*_*ter 7

在文件中定义池,例如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;
};
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

var db = require('./a/path/to/pgpool.js');
var pool = db.getPool();
Run Code Online (Sandbox Code Playgroud)

  • 或者,您可以使用`module.exports = new pg.Pool(config)`.由于模块缓存,这将始终将池的相同实例返回到"require"的每个文件. (5认同)