Node.js met mysql2

mysql2 is de meestgebruikte MySQL-driver voor Node.js. Hij ondersteunt promises en prepared statements.

Installeren

bash
npm install mysql2

Een connection pool maken

Gebruik een pool in plaats van losse verbindingen — die hergebruikt verbindingen en is sneller.

js
// db.js
import mysql from "mysql2/promise";

export const pool = mysql.createPool({
  host: process.env.DB_HOST,
  port: Number(process.env.DB_PORT),
  user: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_NAME,
  waitForConnections: true,
  connectionLimit: 10,
});

Data ophalen

js
import { pool } from "./db.js";

const [rows] = await pool.query("SELECT id, naam, prijs FROM producten");
for (const product of rows) {
  console.log(product.naam, product.prijs);
}

Invoegen met een prepared statement

Gebruik execute() met ?-placeholders — waardes worden veilig ingevuld.

js
import { pool } from "./db.js";

const [result] = await pool.execute(
  "INSERT INTO producten (naam, prijs) VALUES (?, ?)",
  [naam, prijs]
);

console.log("Nieuw id:", result.insertId);

Eén rij ophalen

js
const [rows] = await pool.execute(
  "SELECT * FROM producten WHERE id = ?",
  [id]
);
const product = rows[0]; // undefined als niet gevonden
Nooit waarden in de string plakken
Gebruik pool.execute(sql, [waarden]), niet pool.query(`... WHERE id = ${id}`). Zie Veiligheid.
CommonJS?
Gebruik je require in plaats van import? Dan wordt het const mysql = require("mysql2/promise"); — de rest blijft gelijk.

Meer in Node.js