Crear Aplicacion Básica en nodejs con base de datos en Mariadb (Virtualizada y Dockerizada)

En esta ocasión vamos a crear una aplicacion sencilla, la cual solo mostrará registros de la base de datos en formato JSON en el navegador y a su vez a través de envio de peticiones POST insertará nuevos registros.

Pre Requisitos
Trabajaremos desde Visual studio code para generar el codigo node.js (Maquina Anfitrion). VirtualBox para un servidor centos (maquina Huesped) con docker instalado donde correremos la imagen de mariadb. Tener instalado node en una version superior a la 7 y NPM.

PASO A PASO

Para crear el archivo package.json
npm init -y

Expressjs es un framework rápido, minimalista y flexible de Node.js. Permite crear APIs y aplicaciones web fácilmente, provee un conjunto de características como manejo de rutas (direccionamiento), archivos estáticos, uso de motor de plantillas, integración con bases de datos, manejo de errores, middlewares entre otras.

Instalamos express y mariadb
npm i express
npm i mariadb
crear archivo index.js


contenido:
const express = require('express')
const app = express()
const pool_conex = require('./base_datos') // se refiere a la carpeta llamada base_datos
///MOSTRAR EN EL NAVEGADOR SOCIOS REGISTRADOS
app.get('/socios', async (req, res) => {
//obtener conexiones
const conn = await
pool_conex.getConnection(); //crea un nuevo query o consulta
const query= 'select * from socios';
//ejecutando el query
const registros= await conn.query(query);
//respuesta al cliente
res.status(200).json(registros);
});
app.use(express.json());
app.use(express.urlencoded({ extended: true}));
//OBTENER A TRAVES DEL METODO POST NUEVOS SOCIOS
app.post('/nuevo-socio', async (req, res) => {
let nombre = req.body.nombre;
//obtener conexiones
const conn = await pool_conex.getConnection();
//crea un nuevo query o consulta
const query='insert into socios (nombre) VALUES ("' + nombre +'")';
//ejecutando el query
const resultado= await conn.query(query);
//respuesta al cliente
res.status(200).json(resultado);
});
app.listen(3008, '0.0.0.0', () => {
console.log("el servidor esta escuchando por el puerto:", 3008); })

crear archivo de conexion a base de datos base_datos.js



const mariadb = require('mariadb')
const pool_conex = mariadb.createPool({
host:'192.168.56.105', // esta ip es de la maquina virtual centos donde corre el contenedor
port: '3308',
user: 'root',
password: 'miclave',
database: 'mibasedatos' });
async function getConnection(){
try { const connection = await
pool_conex.getConnection(); return connection; }
catch (error) {
console.log(error) }
} module.exports = {getConnection};

En el servidor virtualizado (Vbox) crear contenedor de mariadb puerto 3308 para no utilizar el que viene por defecto 3306 que se ejecute en segundo plano
docker run -p 3308:3306 -d --name cont_mariadb -e MYSQL_ROOT_PASSWORD=miclave mariadb/server:10.4
Ingresar a mysql
mysql -h 127.0.0.1 -P 3308 -u root -p
Los siguientes comandos los toma tanto en mayúsculas como en minúsculas.
CREATE DATABASE mibasedatos; //crear base de datos
use mibasedatos; // usar base de datos
SELECT DATABASE(); //seleccionar
CREATE TABLE socios(nombre VARCHAR(100)); //crear tabla socios
INSERT INTO socios VALUES ('socio1'), ('socio2');



Con los comandos netstat y docker ps podemos ver que se esta ejecutando el contenedor por el puerto 3308



En Visual studio code corremos la aplicacion node index.js en el terminal veremos:



Ingresar al Navegador a la URL http://localhost:3310/socios



Realizar una peticion POST desde cualquier aplicacion (Postman, Insomnia, etc. Aqui la haremos con Insomnia) a la ruta http://localhost:3310/nuevo-socio y en el body el JSON con el nombre que queremos registrar:




Al consultar la url nuevamente:



Podemos chequearlo en mariadb directamente:



Por ahora esto ha sido todo espero que les sea de provecho. Un ejercicio simple pero que resuelve algunas dudas.

Comentarios

Entradas populares de este blog

CI/CD con Gitlab Gitlab-runner y con un Docker Registry

Dockerizar Gitlab Gitlab-Runner Centos 7