Proper asynchronous mysql query in nodejs?

Completely new to nodejs, having trouble wrapping my head around asynchronous programming/callbacks. What I'm trying to do is:

On 'post', I want to gather all the words in a table in my database. I call it like so: var lesson_data = init_load_lesson(); This call to init_load_lesson() is from index.js in my 'routers' file made my express.

How do I construct a proper callback so that lesson_data is the results of my query?

var mysql = require('mysql'); 
var connection = require('./connection'); 

var data = [];

function init_load_lesson()
{
  connection.connect();

  var queryString = "SHOW COLUMNS FROM LessonOneVocabulary";

  connection.query(queryString, function(err, rows, fields) {
    if (err) throw err;
    else
    {
      for (var i in rows)
      {
        data.push(rows[i].Fields);
        console.log(data);
      }
      console.log(data);
    }
  });

  connection.end();
}


module.exports = function() {
  load_lesson();
};

To add a callback (try a few more functions and you'll get the hang of it):-

function init_load_lesson(callback) {
... // connect to database
  if (err) { 
   callback(err);
  } else {
   // process item
   callback(null, data);
  }
}

init_load_lesson(function(err2, results) {
  if (err2) { 
     // process error
  } else {
     // process results
  }
});