javascript - Node.js:启动 pg.Pool()

标签 javascript node.js postgresql express pg

根据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(生成的)应用程序中,我是否必须在我的app.jsdb.js) em>/在应用程序启动时还是我只需要数据模型中的db.js(分别在我的 route 需要)?直觉上,我会在启动时启动池,而不是在每次连接到路由时启动池,以避免多次启动,但我对 Node.js 还很陌生。

最佳答案

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

其工作原理归功于 Node 的模块缓存。第一次需要 db.js 时,所有初始化代码都会立即执行。后续的 require 调用从缓存中返回已经初始化的模块,因此池已经连接。在 Express 中,您可以使用 app.set('db', db); 将模块附加到 Express 应用程序,从而避免到处都需要 db.js。然后,您可以在路由代码中调用 req.app.get('db').query(...)

如果您的数据需求足够复杂到涉及模型,您可能需要研究更高级别的数据访问库,因为 pg 更多的是一个驱动程序(如果您做过任何 Java,请考虑 JDBC) )。有很多选项,从最小的数据映射器(我维护 MassiveJS )到查询构建器( Knex )再到全面的 ORM( Sequelize )。

关于javascript - Node.js:启动 pg.Pool(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133360/

相关文章:

javascript - 使 javascript 警告/确认对话框更加可见(尤其是在 Google Chrome 浏览器中)

javascript - Node.js:服务器端的 Google Analytics

javascript - 仅使用 HTML 和 CSS 进行语法高亮显示

sql - 连接两个表中矩阵的字符串

postgresql - 识别postgres扩展版本显示不同版本

javascript - 你能在不使用 ' or "引号的情况下创建 JavaScript 字符串吗?

javascript - 使用 AJAX 附加 DIV 内容 - 上一个/下一个

javascript - JQuery JSON 调用 PHP WebService 总是运行 "Error"回调

javascript - 无法使用 Express 和 Node Js 打开从服务器下载的 pdf 文件

postgresql - Postgres : Best way to query hierarchy structures by name