Skip to content

Commit f998cf3

Browse files
author
codeporx
committed
'asd'
1 parent 50cffc2 commit f998cf3

File tree

1 file changed

+267
-0
lines changed

1 file changed

+267
-0
lines changed
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
---
2+
title: 'Cómo usar una base de datos MySQL con Node.js: Guía Completa'
3+
date: '2025-01-30'
4+
tags: ['sql', 'mysql']
5+
draft: false
6+
summary: 'Aprende cómo integrar una base de datos MySQL en tu aplicación Node.js paso a paso. Descubre las mejores prácticas, optimización y ejemplos prácticos para gestionar datos eficientemente.'
7+
authors: ['default']
8+
---
9+
10+
Si estás buscando una forma de integrar una base de datos MySQL en tu aplicación Node.js, estás en el lugar correcto. En este artículo, te mostraremos paso a paso cómo hacerlo de manera efectiva, desde la instalación hasta las consultas SQL más comunes. ¡Vamos a empezar!
11+
## ¿Por qué elegir MySQL con Node.js?
12+
![MySQL con Node.Js](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738250684/Sin_t%C3%ADtulo-2_owndm8.png)
13+
MySQL es uno de los sistemas de gestión de bases de datos más populares debido a su fiabilidad, escalabilidad y facilidad de uso. Cuando lo combinas con Node.js, un entorno de ejecución rápido y eficiente, obtienes una solución potente para aplicaciones web y móviles. Veamos por qué es una excelente elección:
14+
15+
- **Rendimiento rápido**: Node.js maneja múltiples conexiones simultáneas eficientemente.
16+
- **Ampliamente soportado**: La comunidad de desarrolladores de Node.js y MySQL es enorme.
17+
- **Escalabilidad**: Ideal para aplicaciones que requieren crecimiento en el tiempo.
18+
19+
## Requisitos previos
20+
21+
Antes de comenzar, asegúrate de tener instalados los siguientes elementos:
22+
23+
- **Node.js**: Si aún no lo tienes, puedes descargarlo desde [su página oficial](https://nodejs.org).
24+
- **MySQL**: Instala MySQL desde [aquí](https://dev.mysql.com/downloads/).
25+
- **Docker** (opcional): Si prefieres usar un contenedor de Docker para MySQL, puedes hacerlo. [Aquí](https://hub.docker.com/_/mysql) tienes más información.
26+
- **Administrador de paquetes NPM**: Node.js incluye npm, lo que facilita la instalación de dependencias.
27+
- **Table Plus** (opcional) o cualquier otro cliente de MySQL para visualizar y administrar la base de datos.
28+
## Iniciar proyecto en Nodejs
29+
primero debemos crear nuestra carpeta y iniciar el siguiente comando
30+
```bash
31+
npm init -y
32+
```
33+
ahora crearemos nuestra estructura de carpetas
34+
![estructura de carpetas](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738248844/Captura_de_pantalla_2025-01-30_155231_ag1viz.png)
35+
en este caso index.js para nuestro archivo principal
36+
y docker compose para la configuracion de nuestra base de datos en docker si no queremos instalar mysql en nuestra maquina recuerda que debes tener instalado docker DeskTop en tu PC
37+
[instlar docker](https://docs.docker.com/desktop/setup/install/windows-install/)
38+
39+
## Iniciar Mysql con Docker
40+
en el archivo docker-compose.yml debemos tener el siguiente codigo
41+
```yml
42+
version: '3.8'
43+
44+
services:
45+
mysql:
46+
image: mysql:latest
47+
container_name: mysql-container
48+
environment:
49+
MYSQL_ROOT_PASSWORD: rootpassword
50+
MYSQL_DATABASE: my_database
51+
MYSQL_USER: user
52+
MYSQL_PASSWORD: userpassword
53+
ports:
54+
- "3306:3306"
55+
volumes:
56+
- mysql-data:/var/lib/mysql
57+
networks:
58+
- mysql_network
59+
60+
volumes:
61+
mysql-data:
62+
63+
networks:
64+
mysql_network:
65+
driver: bridge
66+
```
67+
con este codigo definiremos el usuario y contraseña de nuestra base de datos y el nombre de la base de datos que vamos a usar en este caso my_database y el puerto que vamos a usar en este caso 3306
68+
par que funcione debemos tener abierto nuestro DockerDestop y ejecutar el siguiente comando en la terminal
69+
```bash
70+
docker-compose up -d
71+
```
72+
una vez que lo corras de deberia descargar la imagen en docker y iniciar el contenedor de mysql y ya tendriamos nuestra base de datos corriendo en nuestro localhost:3306
73+
![docker](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738249385/Captura_de_pantalla_2025-01-30_160115_aajnof.png)
74+
aca podras ver tu contenedor corriendo en docker y en caso de error podras ver el log de tu contenedor el error mas comun que me pasa es tener instlado mysql en mi pc con el puerto por defecto 3306 y no poder usarlo en docker para solucionar esto debes detener el servicio de mysql en tu pc y volver a correr el docker-compose up -d
75+
76+
## Comprobar la base de datos (opcional)
77+
para comprobar que la base de datos este corriendo perfectamente vamos a usar Table Plus o cualquier otro cliente de MySQL para conectarnos a nuestra base de datos.
78+
primero debemos crear una nueva conexion en Table Plus
79+
y usaremos los datos que definimos en el docker-compose.yml para conectarnos a nuestra base de datos
80+
![conexion table plus](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738249576/Captura_de_pantalla_2025-01-30_160548_nvdbpo.png)
81+
una vez que inicies podras ver tu base de datos corriendo perfectamente
82+
![base de datos](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738249732/Captura_de_pantalla_2025-01-30_160750_zcdfso.png)
83+
aca podemos administrar nuestra base de datos y tablas desde una interfaz grafica
84+
85+
### ahora si a conectar mysql con nodejs
86+
87+
### Instalación de MySQL y el paquete `mysql2`
88+
89+
En primer lugar, debes instalar el paquete que te permitirá interactuar con MySQL desde Node.js. El paquete recomendado es `mysql2`, que es una versión mejorada del paquete `mysql` original.
90+
91+
```bash
92+
npm install mysql2
93+
```
94+
95+
### Conexión a la base de datos
96+
97+
Una vez instalada la dependencia, es hora de conectar tu aplicación Node.js a MySQL. Aquí te mostramos cómo hacerlo:
98+
en el archivo index.js debemos tener el siguiente codigo
99+
```js
100+
const mysql = require('mysql2');
101+
102+
// Crear una conexión a la base de datos
103+
const connection = mysql.createConnection({
104+
host: 'localhost',
105+
user: 'user',
106+
password: 'userpassword',
107+
database: 'my_database'
108+
});
109+
110+
// Conectar a la base de datos
111+
connection.connect((err) => {
112+
if (err) {
113+
console.error('Error al conectar a la base de datos: ' + err.stack);
114+
return;
115+
}
116+
console.log('Conexión exitosa a la base de datos con el ID: ' + connection.threadId);
117+
});
118+
```
119+
120+
## Iniciar el servidor de Node.js Con nodemon
121+
para este paso iniciaremos el servidor usando nodemon para que cada vez que hagamos un cambio en nuestro codigo se reinicie el servidor automaticamente
122+
para instalar nodemon debemos ejecutar el siguiente comando en la terminal
123+
```bash
124+
npm install nodemon -d
125+
```
126+
iniciar nuestro servidor con el siguiente comando
127+
```bash
128+
npx nodemon src/index.js
129+
```
130+
una vez que tengas ya todo corriendo podras ver en la terminal que se conecto a la base de datos y podras ver el id de la conexion
131+
132+
![conexion exitosa](https://res.cloudinary.com/dq0pfesxe/image/upload/v1738250114/Captura_de_pantalla_2025-01-30_161445_pgkkty.png)
133+
134+
## Operaciones básicas con MySQL
135+
Ahora que tienes la conexión establecida, puedes comenzar a realizar operaciones sobre tu base de datos. Empecemos con una de las operaciones más comunes: insertar datos.
136+
137+
### crear tabla en la base de datos
138+
para crear una tabla en la base de datos debemos tener el siguiente codigo en nuestro index.js
139+
```js
140+
const sql = `
141+
CREATE TABLE IF NOT EXISTS usuarios (
142+
id INT AUTO_INCREMENT PRIMARY KEY,
143+
nombre VARCHAR(255) NOT NULL,
144+
email VARCHAR(255) NOT NULL
145+
)
146+
`
147+
connection.query(sql, (err, result) => {
148+
if (err) {
149+
console.error('Error al crear la tabla: ' + err);
150+
return;
151+
}
152+
console.log('Tabla creada correctamente: ', result);
153+
});
154+
155+
```
156+
### Insertar datos en la base de datos
157+
158+
159+
```js
160+
const sql = "INSERT INTO usuarios (nombre, email) VALUES (?, ?)";
161+
connection.execute(sql, ['Juan Pérez', 'juan@example.com'], (err, result) => {
162+
if (err) {
163+
console.error('Error al insertar datos: ' + err);
164+
return;
165+
}
166+
console.log('Datos insertados correctamente: ', result);
167+
});
168+
```
169+
170+
### Consultar datos
171+
172+
Una vez que tengas datos en la base de datos, puedes realizar consultas para obtenerlos. Aquí te mostramos cómo hacer una consulta simple:
173+
174+
```js
175+
const sql = "SELECT * FROM usuarios";
176+
connection.execute(sql, (err, results) => {
177+
if (err) {
178+
console.error('Error al consultar datos: ' + err);
179+
return;
180+
}
181+
console.log('Resultados de la consulta: ', results);
182+
});
183+
```
184+
185+
### Actualizar datos
186+
187+
También puedes actualizar registros en la base de datos usando una consulta SQL:
188+
189+
```js
190+
const sql = "UPDATE usuarios SET email = ? WHERE nombre = ?";
191+
connection.execute(sql, ['nuevoemail@example.com', 'Juan Pérez'], (err, result) => {
192+
if (err) {
193+
console.error('Error al actualizar datos: ' + err);
194+
return;
195+
}
196+
console.log('Datos actualizados correctamente: ', result);
197+
});
198+
```
199+
200+
### Eliminar datos
201+
202+
Finalmente, también puedes eliminar registros de la base de datos:
203+
204+
```js
205+
const sql = "DELETE FROM usuarios WHERE nombre = ?";
206+
connection.execute(sql, ['Juan Pérez'], (err, result) => {
207+
if (err) {
208+
console.error('Error al eliminar datos: ' + err);
209+
return;
210+
}
211+
console.log('Datos eliminados correctamente: ', result);
212+
});
213+
```
214+
215+
## Manejo de errores y buenas prácticas
216+
217+
Es importante gestionar los errores adecuadamente para evitar que tu aplicación se caiga o quede con datos corruptos. Algunas buenas prácticas incluyen:
218+
219+
- Validar los datos antes de realizar consultas.
220+
- Usar transacciones para operaciones críticas.
221+
- Configurar un manejo adecuado de errores para la conexión a la base de datos.
222+
223+
## Optimización de consultas en MySQL
224+
225+
Para mejorar el rendimiento, es importante que tus consultas SQL estén bien optimizadas. Algunas estrategias incluyen:
226+
227+
- **Uso de índices**: Mejora el tiempo de respuesta en las consultas de búsqueda.
228+
- **Estructura de la base de datos**: Asegúrate de que las tablas estén bien normalizadas.
229+
- **Evita consultas innecesarias**: Minimiza la cantidad de consultas a la base de datos.
230+
231+
## Conclusión
232+
233+
Integrar MySQL con Node.js es una excelente opción para construir aplicaciones robustas y escalables. Siguiendo estos pasos, podrás crear y administrar tu base de datos con facilidad. Recuerda que las buenas prácticas y la optimización son clave para mantener tu aplicación eficiente.
234+
235+
---
236+
237+
## Preguntas Frecuentes
238+
239+
### ¿Cuál es la diferencia entre `mysql` y `mysql2`?
240+
241+
`mysql2` es una versión más eficiente y moderna del paquete `mysql`, que también es compatible con promesas y async/await, lo que facilita su uso en aplicaciones Node.js modernas.
242+
243+
### ¿Cómo puedo usar `async/await` con MySQL?
244+
245+
Aquí tienes un ejemplo de cómo usar `async/await` para realizar una consulta:
246+
247+
```js
248+
const mysql = require('mysql2/promise');
249+
250+
async function consultarDatos() {
251+
const connection = await mysql.createConnection({host: 'localhost', user: 'root', database: 'test'});
252+
const [rows, fields] = await connection.execute('SELECT * FROM usuarios');
253+
console.log(rows);
254+
}
255+
256+
consultarDatos();
257+
```
258+
259+
---
260+
261+
## Recursos adicionales
262+
263+
- [Documentación oficial de MySQL](https://dev.mysql.com/doc/)
264+
- [Documentación de Node.js](https://nodejs.org/es/docs/)
265+
- [Tutoriales sobre MySQL y Node.js en YouTube](https://www.youtube.com/results?search_query=mysql+nodejs)
266+
267+
[repositorio](https://github.com/Porx312/MysqlNode/tree/mysqlConnectWithDocker)

0 commit comments

Comments
 (0)