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:
- Node.js zainstalowany na swoim komputerze. Jeśli jeszcze go nie masz, pobierz go tutaj.
- MySQL — baza danych. Możesz zainstalować lokalnie lub użyć zdalnego serwera.
- Edytor kodu — np. Visual Studio Code.
- Menadżer pakietów npm, który jest częścią Node.js.
- 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ę!