2

I've created a simple function that runs a query and fetches a field value from a MySQL database in Node. I'm using the normal 'mysql' library. For some reason though, I can't pass the resulting field value out to the function. What am I doing wrong?

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

//This is my function to fetch the field
function getinfofromdb(inputID){
    connection.query('SELECT * FROM `mytable` WHERE ? ORDER BY `ID` DESC LIMIT 1;', {identifierID: inputID}, function (err, rows, fields) {
        if(rows[0]['filename'].length > 0){
            console.log(rows[0]['filename']); // This works fine! I just can't pass it as response. :(
            response = rows[0]['filename'];
        }else{
            response = 'none found';
        }
    });
    return response;
}

//However, I always get that 'response' is undefined
console.log(getinfofromdb(1));

Furthermore, returning from the inner function also yields nothing. There is no problem with the query, as I can console.log it just fine, but it just doesn't return it to the function.

if(rows[0]['filename']){
         console.log(rows[0]['filename']); //This prints out just fine
         return rows[0]['filename']; //Doesn't return anything
}

Update: Everything I'm trying is not yielding anything. Would someone please show me the proper way of writing a function in nodejs using the mysql library (https://github.com/mysqljs/mysql) that receives an input, runs a simple query using that input, and the value of a field in the response row? I'm going nuts.

1 Answers1

0

I found the solution -- this is impossible to do. Coming from a PHP background, not everything I'm used to write is asynchronous. This Node JS MySQL library runs its queries asynchronously, and therefore the callback function cannot return anything. It just prints stuff such as console.log.

I guess I'm gonna revert to PHP.

How to return value from an asynchronous callback function?