Dentro de nuestro directorio raíz vamos a crear un archivo llamado db.js con el siguiente código:
const mysql = require('mysql2/promise');
// Configuración de la conexión a la base de datos
const pool = mysql.createPool({
host: 'host',
user: 'user',
password: 'password',
database: 'nombre_de_la_base_de_datos',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
module.exports = pool;
(Modificar los valores de las propiedades host, user, password y database por los que corresponden en tu base de datos)
Podemos probar el funcionamiento editando el archivo app.js:
//Conexión a la base de datos.
const connection = require('./db');
//Ejemplo de cómo recuperar una lista de registros.
app.get('/eventos', async (req, res) => {
const query = `
SELECT id, nombre, descripcion, cupo
FROM eventos
`;
try{
[results] = await connection.query(query);
res.json({ success: true, results });
}catch(error){
console.log(error);
res.status(500).json({ success: false, message: 'Error al intentar recuperar los eventos' });
}
});
//Ejemplo de cómo recuperar un registro por su ID.
app.get('/eventos/:ID', async (req, res) => {
const {ID} = req.params;
const query = `
SELECT id, nombre, descripcion, cupo
FROM eventos
WHERE id = ?
`;
try{
[results] = await connection.query(query, [ID]);
if(results.length < 1){
res.status(404).json({ success: false, message: 'El evento no existe' });
}else{
res.json({ success: true, result: results[0] });
}
}catch(error){
console.log(error);
res.status(500).json({ success: false, message: 'Error al intentar recuperar el evento' });
}
});
Si bien podemos ingresar en crudo las variables para conectarnos a la base de datos:
host: 'host',
user: 'user',
password: 'password',
database: 'nombre_de_la_base_de_datos',
Lo recomendable es que esta información venga de un archivo .env
.env
Este archivo contiene las variables de entorno y sus valores. Esta información es sensible y como buena práctica nunca debe ser subida a un repositorio como github:
Creamos en el raíz el archivo .env:
DB_HOST=host
DB_USER=user
DB_PASSWORD=password
DB_NAME=nombre_de_la_base_de_datos
(También modificar los valores de las propiedades con los que corresponden a tu base de datos)
Y modificamos db.js:
const mysql = require('mysql2/promise');
// Configuración de la conexión a la base de datos
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
module.exports = pool;
Ahora para iniciar el servidor debemos cambiar:
node --watch app.js
Por:
node --env-file=.env --watch app.js
.env con doten
Si la versión de node es anterior a 20.6.0, no podremos iniciar el servidor con –env-file=.env
Una alternativa a esto es usar la dependencia de doten:
npm install dotenv
Y luego en el archivo app.js incluir al principio:
require('dotenv').config()
Probar los endpoints desde Postman
Podríamos probar las dos rutas nuevas que creamos desde el navegador, aunque lo aconsejable sería que empecemos a familiarizarnos con el postman:

Al consumir cada uno de los endpoint debemos tener en cuenta seleccionar correctamente el verbo, en este caso GET, aunque más adelante vamos a ver otros.
(Previamente llenar la tablas eventos con registros)