Panduan Menggunakan Mongoose dengan Express.js
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!