Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/05/2013, 02:37
kikeking1
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: callback de insert a mysql nunca se ejecuta

Buenas de nuevo, en primer lugar gracias antoniopol por tu tiempo.

Sobre lo de la función MAIL(), segui tu consejo y ahora paso el render como un parametro más en forma de función (se ejecuta como un callback, al terminar de ejecutarse el contenido de la función MAIL() ) así es mas practica dicha función y me aseguro de que el render no se haya ejecutado hasta el momento exacto de que todo termino.

[Dejo la función por si a alguien le parece útil]

Código Javascript:
Ver original
  1. exports.mail = function (target,from,subject,body,callback){
  2.     nodemailer = require("nodemailer")
  3.  
  4.     var smtpTransport = nodemailer.createTransport("SMTP",{
  5.         service: "Gmail", //uso el smtp de gmail para las pruebas
  6.         auth: {
  7.             user: "[email protected]",
  8.             pass: "pass"
  9.         }
  10.     });
  11.  
  12.     var mailOptions = {
  13.         from: from, // quien envía
  14.         to: target, // quienes reciben
  15.         subject: subject, // asunto del mensaje
  16.         html: body // cuerpo del mensaje (en html)
  17.     }
  18.  
  19.     smtpTransport.sendMail(mailOptions, function(error, response){
  20.         if(error){ console.log(error); }
  21.         else{ console.log("Message sent: " + response.message); }
  22.         smtpTransport.close(); // shut down the connection pool, no more messages
  23.     });
  24.  
  25.         if(typeof(callback)==="function"){ callback(); }
  26.  
  27.    
  28. }

Pero el problema que tengo no era eso. Es cuando realizo el insert, que debería lanzarse el callback pero no lo hace en ningun momento. Lo logico sería pensar que tengo algun problema en el insert de sql propiamente dicho, que hace que el callback no se ejecute, pero si realizo dicho insert sin callback, todo funciona correctamente (inserción, envio de mail, el render con el mensaje).

Lo de depurar con el console.log() fue lo primero que hice. Y aquellos que estan justo antes de empezar y justo despues de terminar el query, me aparecen en la consola, aquellos que estan dentro del callback no se ejecutan nunca.

Sin duda el problema está en la ejecución del callback tras el insert (la entrada en la base de dato, si que la hace, aunque nunca se ejecute el callback).... Seguire indagando y si doy con la tecla, lo compartire aquí para el bien común y de mientras, si a alguien se le ocurre alguna cosa más que probar, sigo estando abierto a sugerencias.

Un saludo a la comunidad!.

Última edición por kikeking1; 02/05/2013 a las 02:52