簡體   English   中英

NodeJS Postgres助手-發布連接

[英]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])
})

https://node-postgres.com/features/pooling#single-query

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM