आप एसिंक्रोनस संसाधन को परिनियोजित करने के लिए सिंक्रोनस लूप का उपयोग कर रहे हैं। आप ऐसा नहीं कर सकते।
आपका जबकि लूप डेटाबेस पूल को भरता है और फिर एक बार फिर से लूप करता है और getConnection
. पर ब्लॉक करता है जो तब पूरे Node.js इवेंट लूप को ब्लॉक कर देता है।
आप async
. का उपयोग कर सकते हैं लूप के दौरान अतुल्यकालिक प्रदर्शन करने के लिए पैकेज।
async#forever कॉल वह करेगा जो आप हासिल करने की कोशिश कर रहे हैं।
साथ ही, आपका कोड डेटाबेस कनेक्शन लीक कर रहा है। आपको connection.end()
डालना चाहिए कॉलबैक में पहले जब तक आप उसी कनेक्शन का फिर से उपयोग नहीं करने जा रहे हैं। अन्यथा, कोई त्रुटि डेटाबेस कनेक्शन को लीक कर देगी।
pool.getConnection(function (err, connection) {
if (err) throw err;
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
connection.end(); // return to pool before evaluating error.
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
});