Belajar CRUD Database MySQL dengan Express.js (Lanjutan Routing Dasar)
Pada artikel sebelumnya, kita sudah belajar routing dasar di Express.js menggunakan berbagai HTTP Method seperti GET, POST, PUT, dan DELETE. Pada lanjutan ini, kita akan menghubungkan Express.js dengan database MySQL dan menerapkan CRUD (Create, Read, Update, Delete) secara nyata.
Project ini sangat penting karena:
- Backend hampir selalu terhubung ke database
- Siswa belajar alur request → controller → database → response
- Sudah mendekati backend real-world
Struktur Folder Project
Penjelasan Singkat:
- server.js → file utama menjalankan server
- router.js → pengatur endpoint API
- controller → logika bisnis (CRUD)
- config/db.js → konfigurasi database
- .env → menyimpan data sensitif (host, user, password)
STEP BY STEP SETUP PROJECT
Step 1 — Install MySQL Driver
Digunakan agar Node.js bisa terhubung ke database MySQL.
Step 2— Install dotenv
Digunakan untuk membaca variabel dari file .env
Konfigurasi Environment (.env)
File /src/.env:
File .env digunakan untuk menyimpan konfigurasi penting dan sensitif, terutama yang berhubungan dengan database.
DB_HOST=localhostArtinya: Alamat tempat database MySQL berjalanlocalhost berarti: Database berada di komputer yang sama dengan server Node.js
Contoh lain:
127.0.0.1→ sama dengan localhost192.168.1.10→ database di komputer lain (LAN)db.example.com→ database di server online
DB_USER=rootArtinya: Username MySQL yang digunakan untuk login ke databaseroot adalah User default MySQL dan memiliki akses penuh
Catatan penting untuk siswa:
rootboleh dipakai untuk belajar- TIDAK BOLEH dipakai di server produksi
DB_PASSWORD=Artinya: Password user MySQL
Karena kosong:
Berarti:
- User
roottidak memiliki password - Umum di XAMPP / Laragon (local)
DB_NAME=latihan_dbArtinya: Nama database yang akan digunakan oleh aplikasi
Dalam MySQL:
Jika database tidak ada, maka:
- Aplikasi error
- Koneksi gagal
Kenapa pakai .env?
- Lebih aman
- Mudah diganti tanpa ubah kode
- Best practice backend
Penjelasan File server.js
Penjelasan:
require()→ mengambil moduleexpress()→ membuat aplikasi backendexpress.json()→ agar server bisa membaca data JSONapp.use('/', router)→ semua request diarahkan ke routerapp.listen()→ menjalankan server
Konfigurasi Database (db.js)
Penjelasan:
mysql2/promise→ agar bisa pakaiasync/awaitdotenv.config()→ membaca file.env
Konsep Penting:
- Connection Pool → efisien, tidak buat koneksi berulang
process.env→ ambil data dari.env
pool adalah kumpulan koneksi database yang sudah disiapkan.
Get Muh. Alif Anhar’s stories in your inbox
Join Medium for free to get updates from this writer.
Bayangkan:
- Database = warung
- Koneksi = kursi
- Pool = sekumpulan kursi siap pakai
Jadi:
- Tidak perlu buat koneksi baru setiap request
- Lebih cepat
getConnection() artinya:
“Ambil satu koneksi dari pool untuk digunakan”
Fungsi ini:
- Mengecek apakah database bisa diakses
- Mengembalikan Promise
Apa itu module.exports?
- Digunakan untuk mengirim data/fungsi ke file lain
- Agar
db.jsbisa digunakan di controller
Routing (router.js)
Artinya: Mengambil fungsi CRUD dari controller
Kenapa pakai Controller?
- Kode lebih rapi
- Mudah dirawat
- Sudah mendekati arsitektur MVC
Controller (basoController.js)
- Mengambil Semua Data (GET)
Penjelasan:
async/await→ menunggu hasil querydb.query()→ menjalankan SQLrows→ hasil data dari database
2. Get Data by ID
req.params→ ambil parameter dari URL?→ mencegah SQL Injection
3. Insert Data (POST)
req.body→ data dari clientINSERT INTO→ simpan data
4. Update Data (PUT)
5. Delete Data (DELETE)
6. module.exports dan require
module.exportsDigunakan untuk mengirim fungsi/variabel keluar file.
require()Digunakan untuk mengambil module dari file lain.
Tanpa ini File tidak bisa saling berkomunikasi
Project ini adalah langkah besar dari routing sederhana menuju backend yang sesungguhnya.
Siswa yang memahami materi ini akan lebih siap belajar:
- MVC Architecture
- Authentication
- REST API
- Project backend skala besar










