[英]NodeJS Postgres helper - release connection
我制作了postgres助手,用於連接數據庫和執行查詢。 碼:
var pg = require('pg'); var dbConn = require('../config.json').dbConn; var pool = new pg.Pool(dbConn); var status = { "OK": 0, "ERROR": 1 }; var message = { "success": "success", "error": "error", "databaseError": "Database error" }; var helper = { query: function (query, params, success, error) { pool.connect(function (err, client, done) { if (err) { error({ status: status.ERROR, message: message.databaseError, data: err }); return; } client.query(query, params, function (err, result) { //call `done()` to release the client back to the pool done(); if (err) { error({ status: status.ERROR, message: message.databaseError, data: err }); return; } success({ status: status.OK, message: message.success, result: result }); }); }); } }; module.exports = helper;
執行查詢后沒有邏輯釋放連接。 因此,過了一會兒,我得到數據庫錯誤:“客戶端太多...”有人可以告訴我該怎么做嗎? 一旦我嘗試了一些操作(調用close()或release()函數),但是它中斷了連接,直到重新啟動應用程序后我才能發出新請求。
在執行此操作時,您沒有利用池化功能,而是每次使用助手時都建立池。 如果您正在使用事務,則可能應該看一下pool.query便捷方法,該方法將滿足您的大部分需求:
const { Pool } = require('pg')
const pool = new Pool()
pool.query('SELECT * FROM users WHERE id = $1', [1], (err, res) => {
if (err) {
throw err
}
console.log('user:', res.rows[0])
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.