1

¿Porqué en la siguiente función la variable errorcon siempre es false, aún cuando en el primer else la retorno como true y siempre se ejecuta el if(!errorcon) ?

app.post('/posts', (req, res) => {
   var db = req.db;
   var nombre = req.body.nombre;
   var email = req.body.email;
   var telefono = req.body.telefono;
   var f_entrada = req.body.f_entrada;
   var f_salida = req.body.f_salida;
   var personas = req.body.personas;
   var errorcon = false;

   // TODO comprobar que las reservas no está ocupadas.
   var query = connection.query('SELECT f_entrada, f_salida FROM diasreserva', function(err, result){
      if(err){
          console.log('Error! Conexión mysql ',err);
          return;    
       }else{
          data = result;
          console.log(data);
          errorcon = true;
          return errorcon;
      //     for(var i=0; i<data.length; i++){             
            
      //   } 

         
      }
   });
   if (!errorcon){

         // Según documentación node-mysql es la forma segura de enviar datos
         // https://github.com/mysqljs/mysql#preparing-queries
         var sql = 'INSERT INTO diasreserva(nombre, email, telefono, f_entrada, f_salida, personas) VALUES(?, ?, ?, ?, ?, ?)';
         var inserts = [nombre, email, telefono, f_entrada, f_salida, personas];
         sql = mysql.format(sql, inserts);
         var query = connection.query(sql, function(error, result){
            if(error){
            console.log('Error! No se pudieron insertar los datos.');
            }else{
               res.send({
                  success: true,
                  message: 'Reserva enviada correctamente, en breve recivirá una confirmación.'
               });
            }
         })
   }
         
})
  • 1
    La función `connection.query(...)` tiene una función *callback* porque se resuelve de manera asíncrona, por lo que el valor de errorcon se modifica después de la ejecución de tu if – Pablo Lozano Dec 18 '18 at 12:40

0 Answers0