Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2014, 19:04
gaedcu
 
Fecha de Ingreso: junio-2011
Ubicación: Medellín
Mensajes: 12
Antigüedad: 12 años, 11 meses
Puntos: 0
Valor de Consulta MySQL

Cordial Saludo a todos y gracias por su tiempo.

Tengo un socket en Node.JS y que se conecta con una base de datos MySQL. El socket y las consultas MySQL trabajan muy bien, el problema está en el valor recuperado por la consulta SELECT. Este valor lo necesito para hacer unas actualizaciones UPDATE. Dentro de la función de la query el valor es el correcto, pero por fuera de ella es undefined. les dejaré el código para que se guíen. Agradezco inmensamente a las personas que me puedan ayudar.

PD: el problema está en la parte del código en el case 2022 entre las lineas.
Código:


Código Javascript:
Ver original
  1. var net = require('net');
  2. var mysql = require('mysql');
  3.     console.log("Conectado al Servidor");
  4.     console.log("Socket Escuchando");
  5.     var server = net.createServer(function(socket) {
  6.     console.log("Conectado - Escuchando");
  7.     socket.on('data', function (data) {
  8.         function handleDisconnect(callback) {
  9.             var conexion = mysql.createConnection({
  10.                 host     : '127.0.0.1',
  11.                 user     : 'root',
  12.                 password : '',
  13.                 database : 'dbproduccion_piloto'
  14.             });
  15.             conexion.connect(function(err) {
  16.                 if(err) {
  17.                     console.log('error when connecting to db:', err);
  18.                     //setTimeout(handleDisconnect, 2000);
  19.                 }
  20.             });
  21.             conexion.on('error', function(err) {
  22.                 console.log('db error', err);
  23.                 if(err.code === 'PROTOCOL_CONNECTION_LOST') {
  24.                     console.log('error when connecting to db:', err);
  25.                     handleDisconnect();
  26.                 }
  27.                 else {
  28.                     throw err;
  29.                 }
  30.             });
  31.             var datosin = String(data);
  32.             var cod_peticion = datosin.substr(0,4);
  33.             var placa = datosin.substr(4,7);
  34.             switch(cod_peticion) {
  35.                         case "2020":
  36.                             //EN ESTA PARTE SE REALIZA UNA ENTRADA INSERT QUE TRABAJA BIEN
  37.                             break;
  38.                         case "2021":
  39.                            //EN ESTA PARTE SE REALIZA UNA ENTRADA INSERT QUE TRABAJA BIEN
  40.                             break;
  41.                         case "2022":
  42.                             var latitud_final = datosin.substr(11,9);
  43.                             var nsf = datosin.substr(20,1);
  44.                             var longitud_final = datosin.substr(21,10);
  45.                             var ewf = datosin.substr(31,1);
  46.                             var lasttt = datosin.substr(32,4);
  47.                            //--------------------------------------------------------
  48.                            var id;
  49.                             conexion.query('SELECT Id_Recorrido FROM recorridos WHERE Placa="'+placa+'" ORDER BY Id_Recorrido DESC LIMIT 0,1',function (results, rows) {
  50.                                 id = rows[0].Id_Recorrido;
  51.                                 console.log('Id adentro: '+id);  //ACÁ SE MUESTRA EL VALOR CORRECTO DEL ID EN LA CONSULTA
  52.                                 callback(id);
  53.                                 return id;
  54.                             });
  55.                             console.log('Id afuera: '+id); //ACÁ SE MUESTRA EL VALOR EQUIVOCADO UNDEFINED, DESPUÉS DE HABER REALIZADO LA CONSULTA POR LO QUE NO REALIZA EL UPDATE
  56.                             //--------------------------------------------------------------
  57.                             var querydb = 'UPDATE recorridos SET Latitud_Final="'+latitud_final+'", N_S_F="'+nsf+'", Longitud_Final="'+longitud_final+'", E_W_F="'+ewf+'", LastTT="'+lasttt+'" WHERE Id_Recorrido="'+id+'"';          
  58.                             var respuesta = "ready 2022";
  59.                             break;
  60.                         default:
  61.                             socket.write("coderror");
  62.                 }
  63.                  conexion.query(querydb,function selectUsuario(err, results, fields) {
  64.                       if (err) {
  65.                           socket.write("Error al conectar a la bd");
  66.                           console.log('error when connecting to db:', err);
  67.                           //throw err;
  68.                       }
  69.                      else {
  70.                           socket.write(respuesta);
  71.                       }
  72.                   });
  73.             conexion.end();
  74.         }
  75.         handleDisconnect();
  76.     });
  77. }).listen(12000);

Última edición por gaedcu; 28/03/2014 a las 19:12 Razón: Corregir