2017-05-08 83 views
0

我无法理解如何在NodeJS中连接PostgreSQL池并正确执行。我在路由器上使用Express,所有处理程序都放在不同的文件中。每个人都建议使用数据库连接创建一个单独的文件,然后在每个源代码文件中“要求”它。是否有可能通过app.use或其他东西连接这个池?我的所有处理程序始终使用数据库连接,为每个用户请求。如何正确连接PostgreSQL到NodeJS?

+0

这应有助于:http://mherman.org/blog/2016/03/13/designing-a-restful-api-with-node-and-postgres/ –

+0

@你有没有看过我的问题?我在问其他解决方案。此解决方案很糟糕,不建议在现实生活中使用 –

+0

您对问题的描述过于模糊,无法理解问题的本质。再加上问题的标题是误导性的。我会建议重新考虑你的问题,并提出更多的问题;) –

回答

0

我很确定下面的例子是别人告诉你要做的,这是利用postgres的池。

如果还有另一种方法可以像每个文件中的require和技术2 loc一样简单,我很乐意听到它。所需querydb文件

例子:

"use strict"; 

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

const params = url.parse("postgres://username:[email protected]/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 
})