Conectar a base de datos con Node JS

node js y mysql

Vamos a ver de una forma muy breve cómo conectar a una base de datos con Node JS, también vamos a aprovechar para mostrar los resultados obtenidos en consola. La base de datos que vamos a utilizar para este ejemplo es una base de datos relacional, hablo de MySQL.

Como podéis ver, el ejercicio es muy básico y no tiene porqué tomar más de 15 minutos para completarlo. Empecemos…

Creación del proyecto usando Node JS.


Para empezar y dando por hecho que ya dispones de Node JS y NPM funcionando en tu máquina (si no es el caso, visita este artículo y haz la parte de la instalación: creación de webservices con Node JS y Express), lo que vamos que hacer es crear un directorio para alojar todo el contendido del proyecto. En mi caso, lo voy a ubicar dentro de D:\WWW\Test\NodeJS\. Muévete dentro del directorio donde quieras crear tu proyecto y luego ejecuta la siguiente línea de cmd.

mkdir connect-db

Una vez tengamos ya el nuevo directorio creado, vamos a instalar un módulo necesario para conectar con bases de datos MySQL.

Módulo para conectar desde Node JS a MySQL.

Dentro de la ruta que acabamos de crear, procedemos con la instalación del módulo.

npm install mysql

Hasta el momento todo muy fácil, ¿verdad?… estupendo, sigamos entonces. Ahora lo que necesitamos es una base de datos con una tabla con registros. Supongo que como buen programador que eres tendrás varías: algunas en tu entorno local y otras cuantas en servidores de terceros donde tendrás varios de tus proyectos. De todos modos… sigue leyendo 🙂

Tabla demo para consumir desde aplicación con Node JS.

Quiero facilitarte la tarea y es por ello que aquí mismo te paso el script necesario para la creación de una tabla demo, de este modo, podrás completar el ejercicio de forma ágil.

--
-- Estructura de tabla para la tabla `luisjordan_category`
--
 
CREATE TABLE `luisjordan_category` (
  `id_category` int(10) UNSIGNED NOT NULL,
  `id_parent` int(10) UNSIGNED NOT NULL,
  `id_shop_default` int(10) UNSIGNED NOT NULL DEFAULT 1,
  `level_depth` tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
  `active` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL,
  `name` varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Volcado de datos para la tabla `luisjordan_category`
--
 
INSERT INTO `luisjordan_category` (`id_category`, `id_parent`, `id_shop_default`, `level_depth`, `active`, `date_add`, `date_upd`, `name`) VALUES
(1, 0, 1, 1, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'TV e Vídeo'),
(2, 1, 1, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Televisores'),
(3, 1, 1, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'DVD e Blu-Ray Players'),
(4, 1, 1, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Home Theater'),
(5, 836, 836, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Som Automotivo'),
(7, 3279, 3279, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'MP3 e MP4 Players'),
(10, 11, 1, 3, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Conversores Digitais'),
(11, 1, 1, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Acessórios para TVs'),
(12, 336, 336, 2, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Outros Consoles'),
(13, 0, 13, 1, 1, '2018-10-22 00:00:00', '2018-10-22 00:00:00', 'Eletrodomésticos');
 
 
ALTER TABLE `luisjordan_category`
  ADD PRIMARY KEY (`id_category`),
  ADD KEY `category_parent` (`id_parent`),
  ADD KEY `level_depth` (`level_depth`);
 
ALTER TABLE `luisjordan_category`
MODIFY `id_category` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3388;

Y ahora sí, vamos a crear el script .js que contiene la lógica necesaria.

Aplicación para conectar a base de datos MySQL con Node JS.

// Paquete necesario para conectar a bases de datos MySQL.
var mysql = require('mysql');
// Consulta SQL.
var sql = 'SELECT * FROM luisjordan_category LIMIT 10';
 
// Parámetros de conexión a la base de datos.
var con = mysql.createConnection({
  host: "tu-host",
  user: "tu-user-de-db",
  password: "tu-pass-de-db",
  database : 'tu-nombre-de-db'
});
 
// Funcion que nos permite comprobar la conexión a la base de datos.
// con.connect(function(err) {
//   if (err) throw err;
//   console.log("Connected!");
// });
 
// Funcion que nos devolverá resultados de la base de datos.
con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  con.query(sql, function (err, result) {
    if (err) throw err;
 
    // Bucle que recore los resultados y pinta en consola.
    for(i=0; i<result.length; i++){
    	console.log("Result: " + result[i].name);
    }
 
  });
});

Explicación paso a paso.

Realmente este paso lo vamos a saltar ya que está todo comentado en el código fuente. Si tenéis cualquier duda, dejar un comentario y os responderé lo antes posible.

Conclusión Final.

Podemos ver que Node Js es una plataforma muy potente y está abastecida por un gran número de módulos que nos facilitan las tareas diarias. En esta ocasión, con tan solo unas pocas líneas de código hemos podido conectar a una base de datos y obtener por consola los resultados deseados.

Y como siempre digo, espero que os sea de utilidad.

Versiones utilizadas, tiempo y dificultad de desarrollo:
Node JS: 8.12.0
NPM: 6.4.1
Módulo Express: 4.16.4
Base de datos MySQL: 10.2.16-MariaDB

Dificultad: Iniciación.
Tiempo de desarrollo: 15 minutos.


Summary
Conectar a base de datos con Node JS
Article Name
Conectar a base de datos con Node JS
Description
Vista previa de la meta description:Conecta con tecnología Node JS a una base de datos MySQL de forma rápida y sencilla
Author

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Responsable de los datos: Luis María Jordán Muñoz | Finalidad: Responder a la solicitud que me envíes y ofrecerte información | Legitimación: Tu consentimiento de forma expresa | Destinatario: Webempresa mi proveedor de hosting | Derechos: Tienes derecho al acceso, rectificación, supresión, limitación, portabilidad y olvido, para más información, te dejo enlace a mi política de privacidad ... enlace