Comunidad de diseño web y desarrollo en internet online

Módulo de consultas MySQL para Node.js

Saludos a todos los lectores, en este post les voy a resolver la duda sobre el módulo de consultas MYSQL para Node.JS, y no solo les voy a mostrar cómo se hace, si no que también les voy a recomendar una buena práctica, que aprendí de mi experiencia personal. Espero les sirva.

Módulo de consultas


El módulo se compone de tres partes partes, la primera es el código que consulta el módulo, luego está el módulo de consultas y por último están los queries, donde cada uno es un archivo independiente.

El módulo de consultas lo voy a nombrar database.js y estará en un directorio de nombre modules. Este modulo tiene un runquery, y unos prototipos para los tipos de consultas, en este caso es getSingleData y saveSingleData, estos sirven para obtener datos y el otro es para guardar datos.

Código :

// dependencies
var mysql = require('mysql');
var queries = require('./queries');

// run query to db
var dbConfig = {
   host:'localhost',
   user:'diegoug',
   password:'12345',
   database:'test'
};

var runQuery = function(Query,Data,callback){
   var connection = mysql.createConnection(dbConfig);
   connection.connect(function(err) {
      if (err) throw err;
   });
   
   connection.query(Query,Data,function(err, res){
         if (err) throw err;
         if (callback){
            callback(res);
         }
      }
   );
        connection.end();
}

// module
var DB = function(config){
   config = config || {};
}

DB.prototype.getSingleData = function(data,callback){
   var Query = queries.SQLGETSINGLEDATA;
   var Data  = [data];
   runQuery(Query,Data,function(res){
      res = res.pop();
      callback(res);
   });
}

DB.prototype.saveSingleData = function(data){
   var Query = queries.SQLSAVESINGLEDATA;
   var Data  = data;
   runQuery(Query,Data);
}

module.exports = DB;


El módulo de queries lo voy a nombrar queries.js y esta al mismo nivel. Si se fijan, aquí en los queries el hay un placeholder "?", esto es porque la librería MYSQL que estoy usando nos permite remplazar los datos que llegan hay, y esto ocurre en connection.query(Query,Data... de database.js. Veámoslo.

Código :

var SQLGETSINGLEDATA = "SELECT * " + 
               "FROM tabla " +
               "WHERE nombre = ? " +
               "ORDER BY id " +
               "DESC "
               "LIMIT 1 ";
exports.SQLGETSINGLEDATA = SQLGETSINGLEDATA;

var SQLSAVESINGLEDATA = "INSERT INTO tabla ( " +
                "nombre , apellidos, edad, " +
      "direccion, correo, telefono, celular) " +
      "VALUES (?,?,?,?,?,?,?)";
exports.SQLSAVESINGLEDATA = SQLSAVESINGLEDATA;


Y el código que consulta la base de datos lo voy a nombrar consulta.js y está al mismo nivel que el directorio de modules. Si ustedes tienen la tabla con estos campos todo será ejecutado y será consultado por el modulo runquery en database.js. Al final les mostrará en consola el nombre "diego".

Código :

// dependencies
var DB = require('./modules/database');
var Database = new DB();

Database.saveSingleData(["diego","uribe",26,"calle","diego@",123432,31432]);

Database.getSingleData(1,function(res){
   console.log(res.nombre);
});


Les recomiendo ajustar este modulo a sus propias necesidades. Este modulo puede ser mejorado, cuando tenga una mejor versión les publico de nuevo.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate