You are dealing with JavaScript's beautiful asynchronous-ness-icity. You are are trying to return out of an asynchronous method. Try to brush up on how asynchronous programming works, and it'll make your life much, much easier; it isn't very hard, just different. Check out this code sample, hopefully it can get you up and going.
// use this as your callback to handle the results from connection.query()
function sales_cb(rows) {
var sales = [];
for (x = 0; x < rows.length; x++) {
sales.push(rows[x]);
}
console.log('Sales Returned: ' + JSON.stringify(sales, null, 4));
}
function retrieveSales(connection, timeFrame) {
// connection.query() is asynchronous - interact with it accordingly
connection.query('select * from sales_entries where date BETWEEN ? AND ?', timeFrame,
function (err, rows, fields, sales) {
if (err) {
callback(new Error('Failed to connect'), null);
} else {
// invoke sales_cb(sales) once the for loop is done
sales_cb(rows);
}
});
}
Let me know if this helps :)