Human Cyborg Relations Human Cyborg Relations - 1 year ago 74
MySQL Question

How does connection.end() work with mysql and async requests?

I found the following on the ExpressJS guide:

var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'dbuser',
password : 's3kreee7'


connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);


Isn't this supposed to be bad practice? The way I see it, it is possible for the connection to end before the query can be executed. Wouldn't that give an error?

Answer Source

As stated here :

  • Every method you invoke on a connection is queued and executed in sequence.

  • Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.

So even though the call to the end() method can be made before the query has completed, it won't actually be executed until the query has finished executing.

This has to do more with the mysql package than NodeJS itself.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download