【问题标题】:How to connect PostgreSQL to NodeJS right way? [duplicate]如何以正确的方式将 PostgreSQL 连接到 NodeJS? [复制]
【发布时间】:2017-10-07 01:51:35
【问题描述】:

我不明白如何在 NodeJS 中连接 PostgreSQL 池并正确连接。我正在使用 Express 和路由器,所有处理程序都放在不同的文件中。每个人都建议使用数据库连接创建一个单独的文件,然后在每个源代码文件中“要求”它。是否可以通过 app.use 或其他方式连接此池?对于每个用户请求,我所有的处理程序始终使用数据库连接。

【问题讨论】:

  • 这应该会有所帮助:mherman.org/blog/2016/03/13/…
  • @vitaly-t 你读过我的问题吗?我在问其他解决方案。这个解决方案很糟糕,不建议在现实生活中使用
  • 您对问题的描述过于模糊,无法理解问题的本质。加上问题的标题具有误导性。我建议重新考虑您的问题并提出更多问题;)

标签: node.js postgresql express connection-pooling v8


【解决方案1】:

我很确定下面的示例是其他人告诉你的,这利用了 postgres 的池。

如果有另一种方法可以像 require 一样简单,技术上每个文件 2 loc,我很乐意听到。

所需的 querydb 文件示例:

"use strict";

const url = require('url');
const pg = require('pg');

const params = url.parse("postgres://username:password@server/database");
const auth = params.auth.split(':');

const config = {
  user: auth[0],
  password: auth[1],
  host: params.hostname,
  port: params.port,
  database: params.pathname.split('/')[1]
};

const pool = new pg.Pool(config);

const DB = {
    query: function(query, callback) {
        pool.connect((err, client, done) => {
            if(err) return callback(err)
            client.query(query, (err, results) => {
                done()
                if(err) { console.error("ERROR: ", err) }
                if(err) { return callback(err) }
                callback(null, results.rows)
            })
        });
    }
}

然后,当您想要查询数据库时,您只需使用下面的几行,而不是复制/粘贴整个连接池方法。

示例用法

const queryDB = require("../queryDB.js");

... 
let query = "SELECT * FROM table;"
queryDB.query(query, (err, results) => {
    // Handle err/results
})

【讨论】:

  • 您好,每次查询执行后如何释放连接?就像假设我有 10 个查询在运行,那么在第一个查询之后如何释放与上述代码的连接?
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
相关资源
最近更新 更多