Menghubungkan Node.js ke Database MongoDB menggunakan Mongoose - Perwira Learning Center

 

1. Latar Belakang

    Dalam pengembangan backend menggunakan Node.js dan MongoDB, kita memerlukan cara yang mudah dan terstruktur untuk mengelola data. Secara langsung, MongoDB bisa digunakan tanpa schema yang ketat. Namun, untuk membuat kode lebih rapi dan terorganisir, kita biasanya menggunakan Mongoose.

    Mongoose adalah ODM (Object Data Modeling) untuk MongoDB dan Node.js. Mongoose membantu kita membuat schema, validasi data, serta mempermudah proses CRUD.

    Dengan Mongoose, pengelolaan database menjadi lebih terstruktur dan cocok untuk proyek skala kecil maupun besar.


2. Alat dan Bahan
  • Node.js
  • MongoDB
  • NPM
  • Text Editor (VSCode)

3. Pembahasan

    3.1 Membuat server dan koneksi database
   
Buat file index.js:

 const express = require("express");
const mongoose = require("mongoose");

const app = express();
app.use(express.json());

mongoose.connect("mongodb://127.0.0.1:27017/dbbelajar")
  .then(() => console.log("Database terhubung"))
  .catch((err) => console.log(err));

app.listen(3000, () => {
  console.log("Server berjalan di port 3000");
});

Penjelasan:

  • mongoose.connect() → menghubungkan aplikasi ke MongoDB

  • dbbelajar → nama database


    3.2 Membuat Schema dengan Validasi

Salah satu kelebihan Mongoose adalah bisa membuat aturan validasi data.

 const userSchema = new mongoose.Schema({
  nama: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  umur: {
    type: Number,
    min: 1
  }
}, { timestamps: true });

const User = mongoose.model("User", userSchema);

Penjelasan:

  • required → wajib diisi

  • unique → tidak boleh sama

  • min → batas minimal angka

  • timestamps → otomatis membuat createdAt dan updatedAt


    3.3 Menggunakan Method Mongoose

        3.3.1 Menambahkan data

 app.post("/users", async (req, res) => {
  try {
    const user = await User.create(req.body);
    res.json(user);
  } catch (error) {
    res.status(400).json(error);
  }
});

        3.3.2 Mengambil semua data
 app.get("/users", async (req, res) => {
  const users = await User.find();
  res.json(users);
});

        3.3.3 Update data
 app.put("/users/:id", async (req, res) => {
  const user = await User.findByIdAndUpdate(
    req.params.id,
    req.body,
    { new: true }
  );
  res.json(user);
});

        3.3.4 Hapus data
 app.delete("/users/:id", async (req, res) => {
  await User.findByIdAndDelete(req.params.id);
  res.json({ message: "Data berhasil dihapus" });
});

     3.4 Cara Menjalankan Server

Tambahkan script:

 "scripts": {
  "start": "nodemon index.js"
}

Lalu jalankan:

 npm start

4. Kesimpulan

Menggunakan Mongoose dalam proyek Node.js memberikan banyak keuntungan:

  • Struktur data lebih jelas dengan schema

  • Ada validasi otomatis

  • Kode lebih rapi dan mudah dikelola

  • Mendukung fitur seperti middleware dan populate (relasi antar koleksi)

Jika dibandingkan dengan menggunakan MongoDB tanpa Mongoose, maka:

  • Tanpa Mongoose → lebih fleksibel tapi kurang terstruktur

  • Dengan Mongoose → lebih aman dan cocok untuk proyek nyata

Mongoose sangat direkomendasikan untuk pemula yang ingin membuat backend profesional dengan Node.js dan MongoDB.