2017-05-08 41 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 
})