mysql2
es una librería de Node.js que permite realizar una conexión a una base de datos. En este documento utilizaremos en específico la parte de la librería que utiliza promesas para manejar la asincronía (mysql2/promise
).
Para instalar mysql2
deberemos ejecutar el siguiente comando (dentro de un proyecto de Node.js):
npm install mysql2
Para conectarnos a la base de datos deberemos añadir el siguiente código:
import mysql from "mysql2/promise";
const connection = await mysql.createConnection({
host: "<host>",
user: "<usuario>",
password: "<contraseña>",
database: "<nombre_de_la_db>",
});
En connection
tendremos un objeto que nos permitirá hacer consultas a la base de datos.
Aclaración: (recordar que para poder importar las librerías con import
y para poder utilizar await
fuera de una función deben utilizar "type": "module"
en el package.json
)
Para hacer consultas a la base de datos deberemos añadir el siguiente código:
const [result, fields] = await connection.query("ACÁ VA LA CONSULTA SQL");
En el caso de que la consulta sea un SELECT
, en result
tendremos un array con los resultados de la consulta. En caso de que sea un INSERT
, UPDATE
o DELETE
, en result
tendremos un objeto con información sobre la consulta.
En fields
tendremos información sobre las columnas de la tabla, como el nombre, el tipo, etc.
Para hacer consultas a la base de datos con parámetros deberemos añadir el siguiente código:
const [result, fields] = await connection.query(
"ACÁ VA LA CONSULTA SQL CON ? Y ?",
[parametro1, parametro2]
);
Este código funciona de la misma manera que el anterior, pero en este caso, los ?
serán reemplazados por los parámetros que pasemos en el array. Es decir, la query final que se ejecutará será "ACÁ VA LA CONSULTA SQL CON parametro1 Y parametro2"
.
Esto es útil para evitar inyecciones SQL, haciendo mucho más seguro nuestro código.
Aclaración: Los parámetros deben ser pasados en el mismo orden que los ?
en la consulta SQL. Porque el primer ?
será reemplazado por el primer elemento del array, el segundo ?
por el segundo elemento, y así sucesivamente.