¿Cómo se puede encontrar el valor de la variable de retorno fuera de la función anónima en la función de consulta de nodo js mysql

Hola amigo, soy nuevo en el nodo js. ¿Cómo podemos obtener el valor variable utilizado en la función anónima de consulta de mysql?

var alldata = function(){ var http = require('http'), mysql = require('mysql'); var client = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: '' }); client.connect(); client.query("use cakephp2"); client.query("SELECT id, title,body,created from posts", function(err, results, fields) { if (err) throw err; var output = '

Latest Posts

    '; for (var index in fields) { output += ''; } output += ''; for (var index in results) { output += ''; output += ''; output += ''; output += ''; } output += ''; // console.log(output); // return output; } ); return output ; } exports.alldatas = alldata();

    en el código anterior no encontré el resultado de salida de retorno mientras estaba en client.query cuando uso console.log (salida) da el resultado correcto, pero no puede acceder al valor de salida fuera de la función anónima.

    por favor, ayúdame

    Gracias por adelantado .

    No podrá acceder a esa variable fuera de la función de callback. La razón es que Node.js tiene una característica especial de pasar una función de callback como el siguiente bloque de código que se ejecutará después de realizar una tarea de E / S asíncrona (en su caso, una consulta mysql).

    El código que escribe después de la función de callback se ejecuta inmediatamente cuando su progtwig entra en modo IO. Y la variable de output no está lista hasta que se activa la callback. Y por lo tanto no se puede acceder a ella.

    Puedes leer aqui

    Deberá ajustar la output dentro de esa función de callback o llamar a alguna otra función allí y pasarle la output como parámetro.

    Prueba esto y define el scope de la variable como global.

      DBDATA=""; var alldata = function(){ var http = require('http'), mysql = require('mysql'); var client = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: '' }); client.connect(); client.query("use cakephp2"); client.query("SELECT id, title,body,created from posts", function(err, results, fields) { if (err) throw err; var output = '

    Latest Posts

      ' + fields[index].name + '
      ' + results[index].id + '' + results[index].title + '' + results[index].body + '' + results[index].created + '
      '; for (var index in fields) { output += ''; } output += ''; for (var index in results) { output += ''; output += ''; output += ''; output += ''; } output += '
      ' + fields[index].name + '
      ' + results[index].id + '' + results[index].title + '' + results[index].body + '' + results[index].created + '
    '; DBDATA=output; // console.log(output); // return output; } ); return output ; } console.log(DBDATA); exports.alldatas = alldata();
    Intereting Posts