koneksi nodejs mysql query database | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: koneksi nodejs mysql query database

Saturday, May 30, 2026

koneksi nodejs mysql query database

📚 SERI BELAJAR NODE.JS · ARTIKEL 8 DARI 16

Simpan Data ke Database MySQL
dengan Node.js

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 / CMD bash
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.

SQL mysql
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   TIMESTAMP DEFAULT 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 Database javascript
const mysql = require('mysql2/promise');

// Buat connection pool
const 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!

Contoh query INSERT
const [result] = await pool.query(
  'INSERT INTO users (nama, email) VALUES (?, ?)',
  ['Budi Santoso', 'budi@email.com']
);
console.log('ID baru:', result.insertId);
PUT
UPDATE — Ubah Data
Contoh query UPDATE
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 Lengkap javascript
const express = require('express');
const pool    = require('./db'); // import modul koneksi kita
const 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 dotenvjangan hardcode password di kode!

📄 .env
DB_HOST=localhost
DB_USER=root
DB_PASS=passwordkamu
DB_NAME=belajar_nodejs
💡
Tips Keamanan

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. 🙏

🏷️ Tags Artikel
#BelajarNodeJS #ZeroToZorro #NodeJsMySQL #KoneksiDatabase #QueryMySQLExpress #RESTAPI #BackendDevelopment #ExpressJS
📚
Seri Lengkap
Node.js from Zero to Zorro

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.

🗺️ Lihat Daftar Isi Lengkap →

No comments:

Post a Comment

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