Koneksi Database — Node.js

API yang sebenarnya menyimpan data di database, bukan di memori. Menggunakan SQL dari Express: import Database from "better-sqlite3"; // atau knex, prisma, dll

API yang sebenarnya menyimpan data di database, bukan di memori.

Menggunakan SQL dari Express:

import Database from "better-sqlite3"; // atau knex, prisma, dll
const db = new Database("app.db");

// Setup tabel
db.exec(`
  CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE
  )
`);

// GET /users — ambil semua
app.get("/users", (req, res) => {
  const users = db.prepare("SELECT * FROM users").all();
  res.json(users);
});

// GET /users/:id — ambil satu
app.get("/users/:id", (req, res) => {
  const user = db.prepare("SELECT * FROM users WHERE id = ?").get(req.params.id);
  if (!user) return res.status(404).json({ error: "Not found" });
  res.json(user);
});

// POST /users — buat baru
app.post("/users", (req, res) => {
  const { name, email } = req.body;
  const result = db.prepare("INSERT INTO users (name, email) VALUES (?, ?)").run(name, email);
  const user = db.prepare("SELECT * FROM users WHERE id = ?").get(result.lastInsertRowid);
  res.status(201).json(user);
});

Mengapa parameterized queries (?)?

// BAHAYA — SQL Injection! (jangan lakukan ini)
db.prepare("SELECT * FROM users WHERE name = " + name);

// AMAN — parameterized query
db.prepare("SELECT * FROM users WHERE name = ?").get(name);

Di BelajarWeb.dev, kamu menggunakan sql.js yang berjalan di browser sebagai pengganti database server.

Yang akan kamu pelajari