Ir al contenido


Foto

Problema con NODE JS y MYSQL (modulo mysql de node.js)


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 MaxTer2015

MaxTer2015

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 20 febrero 2015 - 11:53

Hola a todos.

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
  1. connection.query('SELECT * FROM `mensajes_txt` WHERE `mt_idmp`=?', [data], function(error, results){
  2. if(error){
  3.   console.log(error.message);
  4. }else{
  5. if (results.length  > 0) {
  6. for(var i=0; i<results.length; ++i){
  7. var Result = results[i];
  8. var errorST = 0;
  9.  
  10. connection.query('SELECT * FROM `user_nomapp` WHERE `um_iduser`=? LIMIT 1', [Result.mt_user], function(error5, results5){
  11. if(error5){
  12.   errorST = 1;
  13.   var Rname = error5.message;
  14. }else{
  15. var Rname = results5[0].um_nombre + " " + results5[0].um_apellido;
  16.  
  17. connection.query('SELECT * FROM `user_avatar` WHERE `ua_iduser`=? LIMIT 1', [Result.mt_user], function(error6, results6){
  18. if(error6){
  19.   errorST = 2;
  20.   var Ravatar = error6.message;
  21. }else{
  22. if (results6.length  == 0) {
  23. var Ravatar = URLPRIMMARY + "/up/av/anonimo.png";
  24. }else{
  25. var Ravatar = results6[0].ua_url1;
  26. }
  27.  
  28. connection.query('SELECT * FROM `user_name` WHERE `un_iduser`=? LIMIT 1', [Result.mt_user], function(error7, results7){
  29. if(error7){
  30.   errorST = 3;
  31.   var Rnick = error7.message;
  32. }else{
  33. var Rnick = results7[0].un_name;
  34.  
  35. /* Fin */
  36. console.log({
  37. id: Result.mt_idmp,
  38. lick: Result.mt_user,
  39. avatar: Ravatar,
  40. name: Rname,
  41. nick: Rnick,
  42. message: Result.mt_txt,
  43. time: Result.mt_time,
  44. time1: Result.mt_time,
  45. time2: Result.mt_time2
  46. });
  47. if(errorST != 0){
  48. switch(errorST){
  49. case 1:
  50. console.log(Rname);
  51. break;
  52. case 2:
  53. console.log(Ravatar);
  54. break;
  55. case 3:
  56. console.log(Rnick);
  57. break;
  58. default:
  59. console.log(Rname);
  60. console.log(Ravatar);
  61. console.log(Rnick);
  62. break;
  63. }
  64. }else{
  65. var Result2 = Result.mt_user;
  66. socket.emit('new message', {
  67. id: Result.mt_idmp,
  68. lick: Result.mt_user,
  69. avatar: Ravatar,
  70. name: Rname,
  71. nick: Rnick,
  72. message: Result.mt_txt,
  73. time: Result.mt_time,
  74. time1: Result.mt_time,
  75. time2: Result.mt_time1
  76. }, Result2);
  77. }//If end error
  78. }
  79. });
  80. }
  81. });
  82.  
  83. }
  84. });
  85. }
  86. }
  87. }
  88.   });//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.
  • 0