🗄️ Integrasi Database

Level: Advanced

Integrasi Database adalah proses menghubungkan aplikasi backend dengan sistem penyimpanan data. Dengan integrasi ini, aplikasi bisa menyimpan, mengambil, memperbarui, dan menghapus data secara permanen. Bayangkan database seperti gudang arsip, dan backend adalah petugas arsip yang mengatur keluar-masuknya data.

📖 Konsep Utama

🔹 Contoh Integrasi dengan MySQL

// app.js
const express = require("express");
const mysql = require("mysql2");
const app = express();
app.use(express.json());

// Koneksi ke database
const db = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "belajar_db"
});

// Route GET semua user
app.get("/users", (req, res) => {
  db.query("SELECT * FROM users", (err, results) => {
    if (err) throw err;
    res.json(results);
  });
});

// Route POST tambah user
app.post("/users", (req, res) => {
  const { nama } = req.body;
  db.query("INSERT INTO users (nama) VALUES (?)", [nama], (err, result) => {
    if (err) throw err;
    res.status(201).json({ id: result.insertId, nama });
  });
});

app.listen(3000, () => console.log("Server berjalan di http://localhost:3000"));

🔹 Contoh Integrasi dengan MongoDB

// app.js
const express = require("express");
const { MongoClient } = require("mongodb");
const app = express();
app.use(express.json());

const url = "mongodb://localhost:27017";
const client = new MongoClient(url);
const dbName = "belajar_db";

app.get("/users", async (req, res) => {
  await client.connect();
  const db = client.db(dbName);
  const users = await db.collection("users").find().toArray();
  res.json(users);
});

app.post("/users", async (req, res) => {
  await client.connect();
  const db = client.db(dbName);
  const result = await db.collection("users").insertOne({ nama: req.body.nama });
  res.status(201).json(result);
});

app.listen(3000, () => console.log("Server berjalan di http://localhost:3000"));

🛠️ Praktik Kecil

Coba buat database belajar_db dengan tabel users (MySQL) atau koleksi users (MongoDB). Lalu jalankan server Express di atas untuk menguji integrasi database.

🎮 Mini Challenge

Buat API sederhana dengan integrasi database:

Tugas tambahan: Tambahkan validasi agar harga harus berupa angka positif.