Conexión de ORM a MySQL usando Docker y phpMyAdmin
Clase 12 de 27 • Curso de Backend con Node.js: Base de Datos con PostgreSQL
Resumen
¿Cómo manejar errores en ORM con middleware?
Comenzar con un ORM facilita la estructura y gestión de las bases de datos, dado que permite configurar las mismas de manera abstracta. Esta característica, sin embargo, puede causar errores de validación como duplicidades en campos únicos, lo que generalmente resulta en errores 500. Aprender a manejar estos errores de manera eficiente mejora la usabilidad y comprensión de nuestra aplicación.
En este contexto, se crea un middleware llamado ORMErrorHandler
que permite filtrar y ajustar los errores que provienen del ORM, en este caso, SQLite. De forma particular, el middleware captura los errores de tipo ValidationError
, que suelen estar relacionados con restricciones como las de unicidad de un campo. En estos casos, se puede configurar el middleware para que responda con un código de error 409 y brinde detalles claros sobre el problema, ayudando así a identificar rápidamente la causa del error y solucionarlo.
// Ejemplo de código de middleware para manejar errores de ORM
function ORMErrorHandler(err, req, res, next) {
if (err instanceof ValidationError) {
return res.status(409).json({
type: err.name,
message: err.message,
});
}
next(err);
}
¿Cómo configurar y usar Docker para MySQL?
Docker se presenta como una solución ideal para probar diversos motores de bases de datos, como MySQL y MariaDB, sin necesidad de instalarlos directamente en tu máquina. Esto ahorra tiempo y evita la complejidad asociada con la configuración de drivers o conflictos de versiones.
Para ejecutar una imagen de MySQL en Docker, es necesario configurar el archivo docker-compose.yml
con las variables de entorno adecuadas, lo que incluye especificar la versión de MySQL, el usuario, la contraseña root, y los puertos de conexión, además de persistir los datos con un volumen adecuado.
services:
mysql:
image: mysql:5
environment:
MYSQL_USER: Nico
MYSQL_ROOT_PASSWORD: password123
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
Después de configurar el docker-compose.yml
, simplemente con el comando docker compose up
podrás tener tu entorno listo para realizar pruebas y experimentar con MySQL.
¿Qué ventajas ofrece phpMyAdmin?
phpMyAdmin es una herramienta visual que facilita la gestión de bases de datos MySQL sin la necesidad de instalación de software adicional en tu equipo, gracias a Docker. Puedes configurar phpMyAdmin como un contenedor independiente que se comunica con el contenedor de MySQL a través del puerto correspondiente.
services:
phpmyadmin:
image: phpmyadmin
environment:
PMA_HOST: mysql # nombre del servicio MySQL en docker-compose
ports:
- "8080:80"
Esta herramienta permite ejecutar consultas SQL, gestionar datos de las tablas, realizar back-ups, todo desde un entorno gráfico, lo que simplifica enormemente la administración de bases de datos como MySQL. Accederás a phpMyAdmin a través de un navegador web, simplificando tareas administrativas y de mantenimiento.
¿Cómo cambiar la conexión a MySQL sin afectar el código?
Uno de los aspectos más destacados del uso de un ORM es la capacidad de cambiar de un motor de base de datos a otro sin modificar la lógica de la aplicación. Este cambio se logra mediante la actualización de las configuraciones en el .env
y modificaciones en el código de conexión.
Al cambiar de PostgreSQL a MySQL, solo necesitas ajustar el nombre del usuario, la contraseña y el nombre del motor en la cadena de conexión de tu ORM.
# .env file
DB_USER=root
DB_PASSWORD=password123
DB_PORT=3306
# En el archivo de configuración ORM
sequelize = new Sequelize('database', process.env.DB_USER, process.env.DB_PASSWORD, {
host: 'localhost',
dialect: 'mysql',
});
Aunque el cambio de motor es sencillo, cada motor puede tener sus propias reglas y características, por lo que es importante estar atento a los detalles al realizar la migración.
Mantente motivado y sigue explorando las distintas posibilidades que te ofrecen las herramientas de desarrollo modernas. Aprender a manejar bases de datos con herramientas como Docker y ORMs incrementa la flexibilidad y productividad de tus desarrollos.