0

When I try call a callback method my parameters is not defined, only when a callback function is previous defined. What is the correct way to pass parameters to a previous declarated method?

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
  database : 'database'
});

function doQuery(query, callback){
  connection.connect();
  connection.query(query, callback(error, results,fields)); 
  connection.end();
}

doQuery('SELECT 1 + 1 AS sum', function (){
  if (error) throw error;
  console.log(results[0].sum);
})
ReferenceError: error is not defined
    at doQuery (/home/usr/workspace/project/code.js:11:36)
    at Object.<anonymous> (/home/usr/workspace/project/code.js:15:1)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Function.Module.runMain (module.js:684:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

2 Answers 2

1

You have to return your callback like this:

function doQuery(query, callback){
    connection.query(query, (error, results, fields)=> {
         callback(error, results, fields);
    })
}
Sign up to request clarification or add additional context in comments.

Comments

1

need to add error argument function(error){ so that it can available inside function

doQuery('SELECT 1 + 1 AS sum', function (error){
      if (error) throw error;
      console.log(results[0].sum);
    })

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.