He avanzado mucho en cuanto al aprendizaje de NODE.JS la verdad es que es una tecnología muy potente y buena para aprender a usar, pero obviamente no faltan los problemas y acudo a este foro haber si me pueden ayudar.
La idea es la siguiente.
Esto es un chat obviamente se almacena y se muestra todo, nombres/apellidos, nicks, id del usuario, id del chat (sala), avatar.
El problema esta en el cuando el usuario se conecta osea entra a la charla muestre todos los resultados osea el historial que hay de esa sala.
El mecanismo funciona pero el detalle es el siguiente.
Ejemplo: hay 3 mensajes en esta sala.
mensaje 1: de nick1 dice: hola como andan
mensaje 2: de nick2 dice: todo bien y vos
mensaje 3: de nick1 dice: muy bien gracias.
Lo que aparecerá en pantalla tan pronto entre un usuario sera
nick1 dice: muy bien gracias.
nick2 dice: muy bien gracias.
nick1 dice: muy bien gracias.
Siempre toma y muestra el ultimo mensaje, sin embargo los datos que muestra de nick etc... son correctos el único problema es que no desliza por así decirlo son los mensajes.
El código es el siguiente. Esto esta dentro de la funcion de socket on('connection')
delphi
connection.query('SELECT * FROM `mensajes_txt` WHERE `mt_idmp`=?', [data], function(error, results){ if(error){ console.log(error.message); }else{ if (results.length > 0) { for(var i=0; i<results.length; ++i){ var Result = results[i]; var errorST = 0; connection.query('SELECT * FROM `user_nomapp` WHERE `um_iduser`=? LIMIT 1', [Result.mt_user], function(error5, results5){ if(error5){ errorST = 1; var Rname = error5.message; }else{ var Rname = results5[0].um_nombre + " " + results5[0].um_apellido; connection.query('SELECT * FROM `user_avatar` WHERE `ua_iduser`=? LIMIT 1', [Result.mt_user], function(error6, results6){ if(error6){ errorST = 2; var Ravatar = error6.message; }else{ if (results6.length == 0) { var Ravatar = URLPRIMMARY + "/up/av/anonimo.png"; }else{ var Ravatar = results6[0].ua_url1; } connection.query('SELECT * FROM `user_name` WHERE `un_iduser`=? LIMIT 1', [Result.mt_user], function(error7, results7){ if(error7){ errorST = 3; var Rnick = error7.message; }else{ var Rnick = results7[0].un_name; /* Fin */ console.log({ id: Result.mt_idmp, lick: Result.mt_user, avatar: Ravatar, name: Rname, nick: Rnick, message: Result.mt_txt, time: Result.mt_time, time1: Result.mt_time, time2: Result.mt_time2 }); if(errorST != 0){ switch(errorST){ case 1: console.log(Rname); break; case 2: console.log(Ravatar); break; case 3: console.log(Rnick); break; default: console.log(Rname); console.log(Ravatar); console.log(Rnick); break; } }else{ var Result2 = Result.mt_user; socket.emit('new message', { id: Result.mt_idmp, lick: Result.mt_user, avatar: Ravatar, name: Rname, nick: Rnick, message: Result.mt_txt, time: Result.mt_time, time1: Result.mt_time, time2: Result.mt_time1 }, Result2); }//If end error } }); } }); } }); } } } });//Cierre de la conexion
La primera variable 'data' que se pasa en la primera consulta es la id de la sala, todo esto funciona perfectamente..
Yo se que el código es complejo, es digamos le mi primer proyecto en node y bueno me falta ajustar y aprender a organizar mejor el código.
Espero me puedan ayudar. .Gracias de antemano, un cordial saludo.