Node.JS And PostgresDB : Error: Client has already been connected. You cannot reuse a client.

ตั้งใจอยากสร้างฟังก์ชั่นเพื่อส่ง sql statement มา แล้ว return กลับเป็น ข้อมูลที่คิวรี่ออกมา
เมื่อทำการ select เป็นครั้งที่ 2 (เรียกฟังก์ชั่นนั้นครั้งที่สอง) จะขึ้น error Error: Client has already been connected. You cannot reuse a client.
ทั้งๆที่ในคำสั่ง มี client.end เรียบร้อยแล้ว
- ผลจาก Query แรกออกมาเรียบร้อยแล้ว / Query ครั้งแรกไม่มีปัญหา
- ไม่ว่าจะ Set timeout นานขนาดไหนก้ยัง Error ต้องทำการปิด script ก่อนจึงค่อยรันใหม่อีกครั้งได้แค่  1 query เท่านั้น พอเป็น query ที่สอง
Code เป็นดังนี้
- ผู้ให้บริการรายนี้ไม่อนุญาตให้ใช้ Pool
ใส่โค้ด
const { promises } = require('dns');
const fs = require('fs');
const pg = require('pg');
const url = require('url');
module.exports.pg=pg
const config = {
    statement_timeout: 100,
    user: "avnadmin",
    password: "AVN*******2f",
    host: "p*****ncloud.com",
    port: 26239,
    database: "****et",
    ssl: {
        rejectUnauthorized: true,
        ca: `-----BEGIN CERTIFICATE-----
MIIE*****QYJKoZIhvc****************************************NAQEM
BQAwOjE4MDYGA1UEAwwvY2E5ZWFmZGQtOTcwMC00MTYxLTg4MTktODA2N2MwNGVj
MzM4I****MDI1MTExNTI0WhcNMzQ*******************xMDIzMTExNTI0WjA6
MTgwNgYDVQQDDC9jYTllYWZkZC05NzAwLTQxNjEtODgxOS04MDY3YzA0ZWMzMzgg
UHJvamVjdCBDQTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMwVsEhH
BzTNo9xnP3xye+b5Z/qm1MyNag4A6UWN32mAWk65h3RnEAnHVAFESIYSpU8SI0vz
S3nd9r4LQv38A548CJ+Qwk3rn7LqeEZkyuk5FseYOzcxJo1GSSw+as9tJvqz2wlM
ZPyC7nJQ+hOONnXedLmkR7HP6BfWYrRtZmiNSdZdts3ATCGhbjjJ5EuDRIKbn3bl
fBrypfF3l*****kyjH0Q8m2REr*****************vrIZoRWB7aZ3wV3LmCF6h
+ZL/lGUK994sy2MSqTvAkwhTkCWGmc9+b7QiPJXNuLUROKfUWLPlxmZ7IQosy4iC
v08pP5Z****59wFI0Nl5pe************************PC2uuPHSLuYV8IoQHO
M4psa7+b***********************YXa+******+hfJT/mysGn2jBVEclLPymH
FHlFJZJe79una58SgRjiljNTwm5YqUy5c5V0vSqSBIzGSh2tayhrZobz4QIDAQAB
oz8wPTAdBg***************************NVHQ4EFgQ****YDVR0TBAgwBgEB
/wIBADALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEMBQADggGBALyqwToDd3uqhTBA
zosuGMj***fa5vYAn0K9*******************X/iW57vaHk2kO7Ef1Pqso+wFY
wMktBTb/dB7yHskTyNeocpGt7A/5MtDRIYyUu/tb04P5rAKLYRcAm4UZheyAwxrE
+89FhAueaJzHaFsMN****************lv3W0m***y+cIMDAWyd/6BxZXVRCst+
DPX0mONrZ9WB/mZL0s6v4ZoRBTdGeSUl/oMmhmbJMp4V540eev9y+1jIFjdcCua7
385ss+zQM7VR***03JEBqDP****************************/j5s1RaT9SMcHL
ifgmV***YrZK40uhgSH*******************H4k92UyEqhTZmOSKO4XBQb1cPN
Sh5rXnCNep1Tw62K0n************************H+OwfNRfaUWERVjvZtNA==
-----END CERTIFICATE-----`,
    },
};
module.exports.config=config
const clien=new pg.Client(config);
function connecting(){
    return new Promise((resolve,reject)=>{
        clien.connect(function(ConErr){
            if(ConErr){
                reject("Inside connecting Error When connect : "+ConErr)
            }else{
                //console.log("Inside connecting Successs When connect")
                resolve("Inside connecting Successs When connect")
            }
        })
    })
}
function quering(SqlState,data){
    return QueryPromis = new Promise((resolve,reject)=>{
        clien.query(SqlState,data,(QuryErr,result)=>{
            if(QuryErr){
                reject("Inside quering Error When Query : "+QuryErr)
            }else{
                console.log("Inside quering Success When Query")
                resolve(result.rows)
            }
        })
    })
}
function closing(){
    return ClosePromisr = new Promise((resolve,reject)=>{
        clien.end((CloseErr)=>{
            if(CloseErr){
                reject("Inside closing Error When Query : "+CloseErr)
            }else{
                //console.log("Inside closing Success When Query")
                resolve("Inside closing Success When Query")
            }
        })
    })
}
async function SelectDB(sql,params){
    try{
        console.log("in SelectDB"+await connecting())
        const data = await quering(sql,params)
        console.log(data)
        console.log("in SelectDB"+await closing())
    }catch(err){
        console.log(err)
    }
}
/////////////////////////------------------- Call function ------------
SelectDB(`SELECT * FROM public."Brand";`,)
setTimeout(() => {
    SelectDB(`SELECT * FROM public."DocNumber";`,)
}, 3000);
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่