Jak połączyć Node.js z bazą danych MySQL

Jeśli pracujesz z Node.js i zastanawiasz się, jak połączyć aplikację z bazą danych MySQL, to jesteś we właściwym miejscu. Połączenie Node.js z MySQL jest jednym z podstawowych kroków przy tworzeniu aplikacji, które wymagają przechowywania i manipulowania danymi. W tym artykule pokażę Ci, jak to zrobić krok po kroku, w sposób prosty, przystępny i praktyczny. Zaczynamy!

Co będzie potrzebne?

Zanim przejdziemy do kodu, upewnij się, że masz:

  1. Node.js zainstalowany na swoim komputerze. Jeśli jeszcze go nie masz, pobierz go tutaj.
  2. MySQL — baza danych. Możesz zainstalować lokalnie lub użyć zdalnego serwera.
  3. Edytor kodu — np. Visual Studio Code.
  4. Menadżer pakietów npm, który jest częścią Node.js.
  5. Podstawowa znajomość JavaScript i MySQL.

Instalacja potrzebnych modułów

Pierwszym krokiem jest zainstalowanie modułu mysql, który pozwoli nam połączyć się z bazą danych.

W terminalu w folderze swojego projektu wpisz:

npm install mysql

Jeśli wolisz używać nowoczesnego podejścia, możesz zainstalować mysql2, który obsługuje obietnice:

npm install mysql2

Tworzenie połączenia z bazą danych

Teraz przejdźmy do pisania kodu. Otwórz swój edytor i utwórz nowy plik, np. app.js.

1. Importowanie modułu MySQL

Pierwszym krokiem jest zaimportowanie modułu:

const mysql = require('mysql');

2. Konfiguracja połączenia

Teraz musimy skonfigurować dane do połączenia z bazą:

const db = mysql.createConnection({
  host: 'localhost', // Adres hosta (np. '127.0.0.1' lub 'localhost')
  user: 'root',      // Użytkownik MySQL
  password: '',      // Hasło do bazy (pozostaw pusty string, jeśli brak hasła)
  database: 'testdb' // Nazwa bazy danych
});

Zmień wartości w powyższym kodzie na swoje rzeczywiste dane.

3. Nawiązanie połączenia

Teraz nawiążemy połączenie z bazą danych:

db.connect((err) => {
  if (err) {
    console.error('Błąd połączenia z bazą danych:', err.message);
    return;
  }
  console.log('Połączono z bazą danych MySQL!');
});

Wykonywanie zapytań do MySQL

Po ustanowieniu połączenia możemy zacząć wykonywać zapytania SQL.

1. Tworzenie tabeli

Dodajmy nową tabelę w bazie danych. Oto przykład kodu:

const createTable = `
CREATE TABLE IF NOT EXISTS users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL UNIQUE
)`;

db.query(createTable, (err, result) => {
  if (err) {
    console.error('Błąd podczas tworzenia tabeli:', err.message);
    return;
  }
  console.log('Tabela została utworzona:', result);
});

2. Dodawanie danych

Chcesz dodać użytkownika do tabeli? Żaden problem:

const insertUser = `INSERT INTO users (name, email) VALUES (?, ?)`;
const userData = ['Jan Kowalski', 'jan.kowalski@example.com'];

db.query(insertUser, userData, (err, result) => {
  if (err) {
    console.error('Błąd podczas dodawania danych:', err.message);
    return;
  }
  console.log('Użytkownik dodany z ID:', result.insertId);
});

Wartości ? w zapytaniu są bezpieczne dla SQL, dzięki czemu zapobiegasz atakom typu SQL Injection.

3. Pobieranie danych

Oto, jak pobrać dane z tabeli:

db.query('SELECT * FROM users', (err, results) => {
  if (err) {
    console.error('Błąd podczas pobierania danych:', err.message);
    return;
  }
  console.log('Pobrane dane:', results);
});

4. Aktualizowanie danych

Chcesz zaktualizować dane użytkownika? Możesz to zrobić tak:

const updateUser = `UPDATE users SET name = ? WHERE email = ?`;
const updatedData = ['Jan Nowak', 'jan.kowalski@example.com'];

db.query(updateUser, updatedData, (err, result) => {
  if (err) {
    console.error('Błąd podczas aktualizacji danych:', err.message);
    return;
  }
  console.log('Zaktualizowano dane:', result.affectedRows);
});

5. Usuwanie danych

Aby usunąć użytkownika:

const deleteUser = `DELETE FROM users WHERE email = ?`;
const emailToDelete = ['jan.kowalski@example.com'];

db.query(deleteUser, emailToDelete, (err, result) => {
  if (err) {
    console.error('Błąd podczas usuwania danych:', err.message);
    return;
  }
  console.log('Usunięto rekord:', result.affectedRows);
});

Obsługa błędów i zamykanie połączenia

Obsługa błędów to kluczowy element każdej aplikacji. Możesz dodać prostą logikę, aby upewnić się, że Twoja aplikacja będzie działać stabilnie:

db.on('error', (err) => {
  console.error('Wystąpił błąd połączenia:', err.message);
});

Pamiętaj też o zamykaniu połączenia:

db.end((err) => {
  if (err) {
    console.error('Błąd podczas zamykania połączenia:', err.message);
    return;
  }
  console.log('Połączenie z bazą danych zostało zamknięte.');
});

Bonus: Połączenie z MySQL za pomocą obietnic (mysql2)

Jeśli wolisz używać async/await, możesz skorzystać z modułu mysql2:

const mysql = require('mysql2/promise');

(async () => {
  const db = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'testdb',
  });

  console.log('Połączono z bazą danych MySQL!');

  // Przykład zapytania
  const [rows] = await db.execute('SELECT * FROM users');
  console.log('Dane użytkowników:', rows);

  await db.end();
})();

Łączenie Node.js z MySQL może wydawać się na początku trudne, ale z odpowiednimi krokami i przykładami staje się to bardzo proste. Teraz masz gotowe przepisy na tworzenie, odczyt, aktualizację i usuwanie danych w MySQL przy użyciu Node.js. Możesz swobodnie rozwijać swoją aplikację!

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl