From 2801e94fbf3b2b9c9e868d01a75764b72866ddbf Mon Sep 17 00:00:00 2001 From: Jake Soward Date: Mon, 24 Mar 2014 19:19:22 +0000 Subject: [PATCH] Don't call the inherited .query() function with a callback when no callback is called, this changes the behavior of query(). Instead, look for the events that are emitted when no callback is sent and do the normal stuff once the query is over. --- utilities.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/utilities.js b/utilities.js index 4d021ed..36a85fc 100644 --- a/utilities.js +++ b/utilities.js @@ -32,13 +32,33 @@ module.exports = { callback = values; values = []; } - var query = this.inherited(sql, values, function(err, res, fields) { - var endTime = new Date().getTime(), + if (callback) { + var query = this.inherited(sql, values, function(err, res, fields) { + var endTime = new Date().getTime(), executionTime = endTime-startTime; - connection.emit('query', err, res, fields, query); - if (connection.slowTime && (executionTime >= connection.slowTime)) connection.emit('slow', err, res, fields, query, executionTime); - if (callback) callback(err, res, fields); - }); + connection.emit('query', err, res, fields, query); + if (connection.slowTime && (executionTime >= connection.slowTime)) connection.emit('slow', err, res, fields, query, executionTime); + callback(err, res, fields); + }); + } + else { + var res = [] + , fields + , err; + var query = this.inherited(sql, values); + query.on('error', function (e) { + err = e; + }).on('fields', function (f) { + fields = f; + }).on('result', function (r) { + res.push(r); + }).on('end', function () { + var endTime = new Date().getTime() + , executionTime = endTime-startTime; + connection.emit('query', err, res, fields, query); + if (connection.slowTime && (executionTime >= connection.slowTime)) connection.emit('slow', err, res, fields, query, executionTime); + }); + } return query; }); @@ -465,4 +485,4 @@ module.exports = { } -} \ No newline at end of file +}