दरअसल, @Quentine सही चीज़ के करीब था...
यह mysql2
. में एक बग "प्रकार" है , मैं सॉर्ट-ऑफ का उपयोग करता हूं क्योंकि https://github.com/sidorares/node- mysql2/मुद्दों/902
mysql2
. की विकास टीम का सुझाव देता है ठीक है। इसके साथ।
यह एक समस्या है जिस तरह से mysql2.pool बनाए गए कनेक्शन को कॉल पास करता है, जो रैपिंग वादे के अपवाद को पास नहीं करता है।
मैंने कनेक्शन बनाने के लिए अपना स्वयं का रैपिंग फ़ंक्शन बनाना समाप्त कर दिया + उचित वादे से निपटने में लिपटे कॉल निष्पादित करें।
import mysql = require('mysql2');
private async queryDB(query:string, useExecute: boolean = false, ...args:any[]) : Promise<any[]>
{
return new Promise<any[]>((resolve, reject)=>{
for(var i = 0; i < args.length; ++i)
{
if(args[i]===undefined)
args[i] = null;
}
this.dbPool.getConnection((err, conn)=>{
if(err){
reject(err);
return;
}
let cb = function(err: mysql.QueryError, results: any[], fields: mysql.FieldPacket[]) {
conn.release();
if(err)
{
reject(err);
return;
}
resolve(results);
}
if(useExecute)
conn.execute(query, args, cb);
else
conn.query(query, args, cb);
});
});
}