如何正确地将PostgreSQL连接到NodeJS?

时间:2017-05-08 22:23:08

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

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

1 个答案:

答案 0 :(得分:2)

我非常确定以下示例是其他人告诉你要做的事情,这会利用postgres'池。

如果还有另一种方法,就像要求和技术上每个文件2个文件一样简单,我很乐意听到它。

所需的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
})