Panduan Menggunakan Mongoose dengan Express.js

A
IQBAL FARHAN SYUHADA
19 Jun 2024

Pendahuluan

Mongoose adalah pustaka Object Data Modeling (ODM) untuk MongoDB dan Node.js. Mongoose menyediakan skema berbasis pemodelan data untuk aplikasi Anda, yang membuat interaksi dengan MongoDB menjadi lebih sederhana. Dalam artikel ini, kita akan membahas langkah-langkah untuk mengintegrasikan Mongoose dengan Express.js, sebuah framework aplikasi web untuk Node.js.

Persiapan

Sebelum memulai, pastikan Anda sudah menginstal Node.js dan npm (Node Package Manager). Jika belum, Anda dapat mengunduhnya dari situs resmi Node.js.

1. Membuat Proyek Baru

Buat direktori baru untuk proyek Anda dan masuk ke dalamnya melalui terminal:

mkdir express-mongoose-app
cd express-mongoose-app

2. Inisialisasi Proyek

Inisialisasi proyek Node.js dengan perintah berikut:

npm init -y

Perintah ini akan membuat file package.json dengan konfigurasi default.

3. Menginstal Dependensi

Instal Express.js dan Mongoose:

npm install express mongoose

4. Membuat Struktur Proyek

Struktur dasar proyek Anda mungkin terlihat seperti ini:

express-mongoose-app/
├── node_modules/
├── src/
│   ├── models/
│   │   └── user.js
│   ├── routes/
│   │   └── userRoutes.js
│   └── app.js
├── .env
├── package.json
└── package-lock.json

5. Membuat Koneksi ke MongoDB

Buat file .env di direktori root proyek Anda untuk menyimpan variabel lingkungan, termasuk URI MongoDB:

touch .env

Tambahkan URI MongoDB ke dalam file .env:

MONGODB_URI=mongodb://localhost:27017/nama_database

Buat file app.js di dalam folder src dan tambahkan kode berikut untuk mengatur koneksi ke MongoDB:

require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');

const app = express();
const PORT = process.env.PORT || 3000;
const MONGODB_URI = process.env.MONGODB_URI;

mongoose.connect(MONGODB_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
  .then(() => console.log('Connected to MongoDB'))
  .catch(err => console.error('Could not connect to MongoDB', err));

app.use(express.json());

// Import routes
const userRoutes = require('./routes/userRoutes');
app.use('/api/users', userRoutes);

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

6. Membuat Model Mongoose

Buat model untuk pengguna (user) di src/models/user.js:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  }
});

module.exports = mongoose.model('User', userSchema);

7. Membuat Rute Express

Buat rute untuk operasi CRUD pengguna di src/routes/userRoutes.js:

const express = require('express');
const router = express.Router();
const User = require('../models/user');

// Create a new user
router.post('/', async (req, res) => {
  try {
    const user = new User(req.body);
    await user.save();
    res.status(201).send(user);
  } catch (error) {
    res.status(400).send(error);
  }
});

// Get all users
router.get('/', async (req, res) => {
  try {
    const users = await User.find();
    res.status(200).send(users);
  } catch (error) {
    res.status(500).send(error);
  }
});

// Get a user by ID
router.get('/:id', async (req, res) => {
  try {
    const user = await User.findById(req.params.id);
    if (!user) {
      return res.status(404).send();
    }
    res.status(200).send(user);
  } catch (error) {
    res.status(500).send(error);
  }
});

// Update a user by ID
router.patch('/:id', async (req, res) => {
  try {
    const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true });
    if (!user) {
      return res.status(404).send();
    }
    res.status(200).send(user);
  } catch (error) {
    res.status(400).send(error);
  }
});

// Delete a user by ID
router.delete('/:id', async (req, res) => {
  try {
    const user = await User.findByIdAndDelete(req.params.id);
    if (!user) {
      return res.status(404).send();
    }
    res.status(200).send(user);
  } catch (error) {
    res.status(500).send(error);
  }
});

module.exports = router;

8. Menjalankan Aplikasi

Jalankan aplikasi dengan perintah berikut:

node src/app.js

Server Anda sekarang berjalan di http://localhost:3000. Anda dapat menggunakan alat seperti Postman atau cURL untuk menguji API Anda.

Kesimpulan

Anda telah berhasil mengintegrasikan Mongoose dengan Express.js untuk membuat aplikasi CRUD sederhana. Dengan menggunakan Mongoose, Anda dapat dengan mudah mendefinisikan dan berinteraksi dengan skema MongoDB, sedangkan Express.js memberikan fleksibilitas dalam membangun rute dan middleware untuk aplikasi web Anda. Semoga panduan ini bermanfaat untuk memulai proyek Anda!