Node.js:启动pg.Pool()

Node.js: initiate pg.Pool()

根据example (db.js)

const pg = require('pg');

const client_config = {...};

const pool = new pg.Pool(client_config);

pool.on('error', function(err, client) {
  console.error('idle client error', err.mesae, err.stack);
});

module.exports.query = function(text, values, callback) {
  return pool.query(text, values, callback);
};

module.exports.connect = function(callback) {
  return pool.connect(callback);
};

并且在 express(生成的)应用程序中,我是否必须 initiate/require 池(db.js) 在我的 app.js/应用程序启动时,或者我只是在我的数据模型中需要 db.js (分别在我的路线中需要)?直觉上,我会在启动时启动池,而不是在每次连接到路由时启动,以避免多次启动,但我对 Node.js.

相当陌生

再滚动一点 -- 有使用示例。

之所以能成功,是因为 Node 的模块缓存。第一次需要 db.js 时,所有初始化代码立即执行。随后 require 从缓存中调用 return 已经初始化的模块,因此池已经连接。在 Express 中,您可以通过使用 app.set('db', db); 将模块附加到 Express 应用程序来避免到处都需要 db.js。然后,您可以在路由代码中调用 req.app.get('db').query(...)

如果您的数据需求复杂到足以涉及模型,您可能需要研究更高级别的数据访问库,因为 pg 更像是一个驱动程序(想想 JDBC 如果您已经完成任何 Java)。有很多选项,从最小数据映射器(我维护 MassiveJS) to query builders (Knex) to full-scale ORMs (Sequelize)。