我有一個Node.js應用程序通過node-postgres使用PostgreSQL。我已經開始收到錯誤「對不起,客戶已經太多了」,這讓我想知道我是否創建了太多的客戶端對象,或者是否應該手動斷開它們。目前,我正在創建一個訪問數據庫的每個函數調用的新客戶端對象。例如:節點應該在什麼時候創建數據庫連接?
var db {
checkDetails : function() {
var client = new pg.Client(conString);
...
},
amendDetails : function() {
var client = new pg.Client(conString);
...
},
...
}
這是正確的還是應該在其他地方創建一個客戶端對象?或者我應該打電話給client.end()
?作爲我使用的回調風格的例子沒有包括這個,我認爲這是沒有必要的。
你應該使用'Singleton'數據庫連接,這意味着你的代碼中只有一個客戶端可以處理所有的查詢。並且你不必使用'end()' – williamC 2013-05-01 12:49:27
也應該監聽數據庫'close'事件,如果連接失敗,只需重新連接 – williamC 2013-05-01 12:50:30
我注意到客戶端'connect'是異步的,所以使用'EventEmitter '。我不熟悉'node-postgres',但這是我在cassandra中做到的(https://gist.github.com/wwwy3y3/5412976) – williamC 2013-05-01 13:15:04