如何以正确的方式将 PostgreSQL 连接到 NodeJS? [复制]

Posted

技术标签:

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

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

【问题讨论】:

这应该会有所帮助:mherman.org/blog/2016/03/13/… @vitaly-t 你读过我的问题吗?我在问其他解决方案。这个解决方案很糟糕,不建议在现实生活中使用 您对问题的描述过于模糊,无法理解问题的本质。加上问题的标题具有误导性。我建议重新考虑您的问题并提出更多问题;) 【参考方案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 个查询在运行,那么在第一个查询之后如何释放与上述代码的连接?

以上是关于如何以正确的方式将 PostgreSQL 连接到 NodeJS? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node JS 连接到在线托管的 PostgreSQL

将源自不同表的两个 postgresql tsvector 字段连接到单个 postgresql 视图中,以启用联合全文搜索

如何将 Docker 内部的 Spring Boot 应用程序连接到 PostgreSQL 外部

如何通过standalone.xml 配置将 PostgreSql 连接到 Keycloak

如何将 IAM 服务帐号连接到 Cloud SQL 实例

如何将主机上运行的 Spring Boot 应用程序连接到 Docker 上运行的 Postgresql?