typescript+node.jsを用いてMysqlに接続する処理を書いています。接続が失敗した時には間隔を置いて最大5回までリトライするようにしたいと考えているのですが、リトライ処理が完了する前に結果が返ってきてしまいます。接続処理が成功した時にはtrueを、失敗したときにはfalseを返す仕組みにするにはどうすればよいでしょうか。お知恵を拝借したく思います。よろしくお願いいたします。
接続処理側のコード
typescipt
1const mysql = require('mysql'); 2let connection; 3let cnt = 0; 4 5 6export const cm_dbconnect = async() => { 7 8 var dbInfo = { 9 host : '127.0.0.1', 10 user : '****', 11 password : '**********' 12 } 13 14 let db = mysql.createConnection(dbInfo); 15 16 const attemptConnection = async() => { 17 console.log('Attempting to connect to db') 18 19 20 21 db.connect(async function (err) { 22 if (err) { 23 24 cnt += 1; 25 console.log('Error connecting to database, try again in 1 sec...') 26 db.destroy() 27 if (cnt<5) { 28 console.log(cnt); 29 30 function settimeoutpromise() { 31 return new Promise((resolve, reject) => { 32 setTimeout(() => { 33 cm_dbconnect(); 34 resolve("end") 35 }, 1000); 36 })} 37 await settimeoutpromise(); 38 39 } 40 } 41 }) 42 43 44 } 45 await attemptConnection() 46 47 48 49 module.exports = db; 50 if(cnt<5) { 51 return {result: true, errCode: "", errDetail: ""}; 52 } else { 53 return {result: false, errCode: "", errDetail: ""}; 54 } 55 56}
コントローラー側のコード
typescript
1export const Controller = async () => { 2 3 4 let connect = await cm_dbconnect(); 5 6 let db = require(''); 7 let sql = 'select *** from ***;'; 8 db.query(sql, function (error, results, fields) { 9 console.log(results); 10 11 }) 12 13 console.log("aaaa"); 14 console.log(connect); 15 16 17 } 18let test = Controller();
結果
Attempting to connect to db aaaa { result: true, errCode: '', errDetail: '' } Error connecting to database, try again in 1 sec... 1 undefined Attempting to connect to db Error connecting to database, try again in 1 sec... 2 Attempting to connect to db Error connecting to database, try again in 1 sec... 3 Attempting to connect to db Error connecting to database, try again in 1 sec... 4 Attempting to connect to db Error connecting to database, try again in 1 sec...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 13:41
2021/05/14 13:47
2021/05/14 14:11
2021/05/14 14:13
2021/05/14 15:10
2021/05/14 21:29 編集
2021/05/14 21:37
2021/05/17 15:46