Koneksi Node.js ke MySQL, query data dari nol, sampai integrasi penuh ke REST API Express — panduan lengkap untuk pemula.
#NodeJS#MySQL#Database#REST API#Express.js
⏱️
Baca
12 Menit
🎯
Level
Pemula
📅
Tahun
2026
🗄️
Topik
Node.js + MySQL
Bayangkan kamu sudah capek-capek membangun REST API yang keren — endpoint-nya rapi, response JSON-nya mulus — tapi semua datanya cuma tersimpan di array JavaScript. Begitu server di-restart, poof, data hilang. Itulah masalah yang akan kita selesaikan hari ini: menghubungkan Node.js MySQL sehingga data kamu benar-benar tersimpan permanen.
Di artikel ke-8 dari Seri Belajar Node.js ini, kita akan belajar cara melakukan koneksi database MySQL Node.js, menjalankan query SQL dari kode JavaScript, hingga mengintegrasikan semuanya ke dalam REST API berbasis Express yang sudah kita buat sebelumnya. Kalau kamu pernah belajar SQL dasar, ini akan terasa familiar — bedanya sekarang kamu yang pegang kendali lewat kode!
🔑 Konsep Kunci
MySQL itu gudangnya, Node.js itu kurirnya.
MySQL menyimpan data secara permanen di disk. Node.js bertugas sebagai kurir yang mengantar permintaan (query) ke MySQL, mengambil hasilnya, lalu menyajikannya ke pengguna lewat API. Package mysql2 adalah jembatan resmi antara keduanya.
1. Persiapan: Install mysql2 dan Buat Database
Sebelum bisa melakukan koneksi database MySQL Node.js, kamu perlu dua hal: MySQL yang sudah terinstal (bisa pakai XAMPP, WAMP, atau MySQL langsung) dan package mysql2 di proyek Node.js-mu.
1
Install package mysql2
Package mysql2 adalah versi modern dan lebih cepat dari mysql. Ini pilihan yang direkomendasikan komunitas Node.js saat ini.
Terminal / CMDbash
npm install mysql2
2
Buat database dan tabel di MySQL
Jalankan perintah SQL ini di phpMyAdmin, MySQL Workbench, atau MySQL CLI. Kita akan pakai tabel users sebagai contoh sepanjang artikel ini.
SQLmysql
CREATE DATABASE belajar_nodejs;
USE belajar_nodejs;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
dibuat TIMESTAMPDEFAULT CURRENT_TIMESTAMP
);
💡
Tips Pemula
Gunakan XAMPP kalau kamu di Windows/Mac dan ingin cara paling simpel. Cukup klik "Start" di Apache dan MySQL, lalu buka localhost/phpmyadmin untuk mengelola database-mu secara visual.
2. Koneksi Node.js ke MySQL: Pool vs Single Connection
Ada dua cara melakukan koneksi database MySQL Node.js: koneksi tunggal (single connection) atau pool koneksi (connection pool). Analoginya begini — single connection itu seperti kamu pergi ke kasir sendirian, satu per satu. Pool koneksi itu seperti punya 10 kasir siaga sekaligus. Untuk aplikasi nyata, selalu pakai pool.
⚖️ Perbandingan: Single Connection vs Pool
Aspek
Single Connection
Connection Pool
Kecepatan
Lambat (antri)
✅ Cepat (paralel)
Multi-user
❌ Tidak ideal
✅ Sangat ideal
Kegunaan
Skrip sekali jalan
✅ Server/API produksi
Kompleksitas
✅ Mudah
Sedikit lebih banyak setup
Mari kita buat file db.js khusus untuk mengelola koneksi pool:
📄 db.js — Modul Koneksi Databasejavascript
const mysql = require('mysql2/promise');
// Buat connection poolconst pool = mysql.createPool({
host : 'localhost',
user : 'root',
password: '', // sesuaikan password MySQL kamu
database: 'belajar_nodejs',
waitForConnections: true,
connectionLimit: 10, // maksimal 10 koneksi paralel
});
module.exports = pool;
⚡
Insight Penting
Kita pakai mysql2/promise bukan mysql2 biasa. Versi promise memungkinkan kita memakai async/await — kode jadi jauh lebih bersih dan mudah dibaca dibandingkan callback tradisional.
3. Query MySQL dengan Node.js: SELECT, INSERT, UPDATE, DELETE
Setelah koneksi berhasil, saatnya belajar cara menjalankan query MySQL Express untuk operasi CRUD — Create, Read, Update, Delete. Semua query dikirim lewat metode pool.query() yang sudah kita buat tadi.
GET
SELECT — Ambil Semua Data
Contoh query SELECT
const [rows] = await pool.query('SELECT * FROM users');
console.log(rows); // array of objects
POST
INSERT — Tambah Data Baru
Selalu gunakan parameterized query (tanda ?) — bukan string concatenation — untuk mencegah SQL Injection!
const [result] = await pool.query(
'UPDATE users SET nama = ? WHERE id = ?',
['Budi Baru', 1]
);
console.log('Baris diubah:', result.affectedRows);
DEL
DELETE — Hapus Data
Contoh query DELETE
const [result] = await pool.query(
'DELETE FROM users WHERE id = ?',
[1]
);
console.log('Baris dihapus:', result.affectedRows);
⚠️
Perhatian — SQL Injection
Jangan pernah memasukkan input user langsung ke string query seperti 'SELECT * FROM users WHERE id = ' + req.params.id. Ini membuka celah SQL Injection. Selalu gunakan parameterized query dengan tanda ?!
4. Integrasi Query MySQL Express ke REST API
Inilah bagian paling seru — menggabungkan semua yang sudah kita pelajari di artikel sebelumnya. Kita akan membuat file app.js dengan Express yang endpoint-nya langsung terhubung ke database MySQL. Inilah cara kerja aplikasi backend yang sesungguhnya.
📄 app.js — REST API + MySQL Lengkapjavascript
const express = require('express');
const pool = require('./db'); // import modul koneksi kitaconst app = express();
app.use(express.json());
// GET /users — Ambil semua user
app.get('/users', async (req, res) => {
try {
const [rows] = await pool.query('SELECT * FROM users');
res.json(rows);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// GET /users/:id — Ambil satu user
app.get('/users/:id', async (req, res) => {
const [rows] = await pool.query(
'SELECT * FROM users WHERE id = ?',
[req.params.id]
);
if (!rows.length) return res.status(404).json({ message: 'User tidak ditemukan' });
res.json(rows[0]);
});
// POST /users — Tambah user baru
app.post('/users', async (req, res) => {
const { nama, email } = req.body;
const [result] = await pool.query(
'INSERT INTO users (nama, email) VALUES (?, ?)',
[nama, email]
);
res.status(201).json({ id: result.insertId, nama, email });
});
// PUT /users/:id — Update user
app.put('/users/:id', async (req, res) => {
const { nama } = req.body;
await pool.query('UPDATE users SET nama = ? WHERE id = ?', [nama, req.params.id]);
res.json({ message: 'User berhasil diperbarui' });
});
// DELETE /users/:id — Hapus user
app.delete('/users/:id', async (req, res) => {
await pool.query('DELETE FROM users WHERE id = ?', [req.params.id]);
res.json({ message: 'User berhasil dihapus' });
});
app.listen(3000, () => console.log('Server jalan di port 3000 🚀'));
🔥
Fakta Menarik
MySQL adalah database relasional yang paling banyak digunakan di dunia — mentenagai raksasa seperti Facebook (di masa awal), Twitter, dan YouTube. Dengan hanya ~50 baris kode yang baru saja kita tulis, kamu sudah menggunakan teknologi yang sama seperti yang dipakai jutaan aplikasi global!
5. Struktur Proyek dan Best Practice Node.js MySQL
Sebelum proyek kamu makin besar dan berantakan, yuk kenali struktur folder yang rapi untuk aplikasi Node.js MySQL. Ini bukan sekedar estetika — struktur yang baik membuat kode lebih mudah di-maintain, di-debug, dan dikembangkan bersama tim.
📁 Struktur Folder yang Disarankan
my-api/
├── db.js ← konfigurasi koneksi pool
├── app.js ← entry point Express
├── routes/
│ └── users.js ← semua route /users dipisah di sini
├── controllers/
│ └── userCtrl.js ← logika bisnis (query ke DB)
├── .env ← simpan credential database
└── package.json
Simpan credential database di file .env menggunakan package dotenv — jangan hardcode password di kode!
Setelah buat file .env, tambahkan ke .gitignore supaya credential-mu tidak ikut terupload ke GitHub. Ini kebiasaan wajib setiap developer profesional!
✅ Kesimpulan
Sekarang Data Kamu Tersimpan Permanen! 🎉
Di artikel ini, kamu sudah menguasai cara melakukan koneksi database MySQL Node.js menggunakan connection pool, menjalankan query MySQL Express untuk operasi CRUD lengkap, dan mengintegrasikan semuanya ke REST API. Tiga skill utama yang sudah kamu kuasai:
✦Install dan konfigurasi mysql2/promise dengan connection pool
✦Menjalankan query SELECT, INSERT, UPDATE, DELETE dengan parameterized query yang aman
✦Membangun REST API Express yang terhubung penuh ke database MySQL
Punya pertanyaan atau ada bagian yang masih membingungkan? Yuk tulis di kolom komentar — kita diskusi bareng! Kalau artikel ini bermanfaat, bantu share ke teman-temanmu yang juga lagi belajar backend. 🙏
Artikel ini adalah bagian dari seri lengkap 16 artikel belajar Node.js dari nol sampai mahir. Klik tombol di bawah untuk melihat daftar isi lengkap dan navigasi antar artikel.
saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux
No comments:
Post a Comment