node.js callback inside mysql result

Im new on Node.js, im trying to create non-blocking business because mobile clients can CRUD operations on mysql server (real time). I know, i must add callback function but how ? And someone explain to me what callback is? How can i fix my code to non-blocking:

var node_port = 3030;
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var db = require('mysql');
var db_pool = db.createPool({
    host : 'localhost',
    user : 'root',
    password : '1234',
    database : 'test',
    port : 3306
});

app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use( bodyParser.urlencoded() ); // to support URL-encoded bodies
app.post('/api/db', function(objRequest, objResponse) {
    objResponse.setHeader('content-type', 'application/json');
    db_pool.getConnection(function(objError, objConnection){
        if(objError){
            sendError(objResponse, 503, 'error', 'connection', objError); //503 - Service Unavailable
        }else{
            var strQuery = "";
            var tableName = objRequest.body.table_name;
            switch(objRequest.body.type){
                case 'select':
                    strQuery = "SELECT * FROM "+tableName;
                    break;
                case 'insert':
                    var id = objRequest.body.id;
                    var name = objRequest.body.name;
                    strQuery = "INSERT INTO "+tableName+" (ID, Name) VALUES ('"+id+"','"+name+"')";
                    break;
                case 'update':
                    var id = objRequest.body.id;
                    var name = objRequest.body.name;
                    strQuery = "UPDATE "+tableName+" SET ID='"+id+"' AND Name='"+name+"'";
                    break;
                case 'delete':
                    var id = objRequest.body.id;
                    strQuery = "DELETE * FROM "+tableName+" WHERE ID='"+id+"'";
                    break;
                default:
                    sendError(objResponse, 503, 'error', 'content-type unknown', { code : 'CONTENT-TYPE MISMATCH' });
            }//switch
            objConnection.query(strQuery, function(objError, objRows, objFields){
                if(objError){
                    sendError(objResponse, 500, 'error', 'query', objError);
                }else{
                    objResponse.send({
                        results : 'success',
                        err : '',
                        err_type : '',
                        fields : objFields,
                        rows : objRows,
                        length : objRows.length
                    });
                }
            });
            objConnection.release();
        }
    });
});

function sendError(objResponse, iStatusCode, strResult, strType, objError){
    objResponse.send({
        results : strResult,
        err : objError.type,
        err_type : strType
    });
}

app.listen(node_port);
console.log('App listening on port' + node_port);