2.2 Database MongoDB - Tutorial Aplikasi Presensi
2.2 Database MongoDB
Pengenalan MongoDB
MongoDB adalah database NoSQL yang menyimpan data dalam format dokumen JSON-like yang disebut BSON (Binary JSON). Berbeda dengan database SQL tradisional, MongoDB memiliki struktur yang lebih fleksibel dan mudah untuk dikembangkan seiring berkembangnya aplikasi.
Beberapa konsep dasar MongoDB yang perlu dipahami:
Document: Unit dasar data dalam MongoDB (mirip dengan row/record di SQL)
Collection: Kumpulan documents (mirip dengan table di SQL)
Database: Kontainer untuk collections
Membuat Database dan Collection
Untuk aplikasi presensi kita, kita akan membuat database bernama attendance_db dengan dua collection utama:
users: Menyimpan data penggunaattendances: Menyimpan data presensi
// Buat koneksi ke MongoDB
use attendance_db
// Collections akan dibuat secara otomatis saat pertama kali
// menyimpan documentKoneksi MongoDB dengan Mongoose
Mongoose adalah ODM (Object Data Modeling) library untuk MongoDB dan Node.js. Mari kita setup koneksi database:
Install Mongoose:
Buat file
config/database.js:
Membuat Schema
User Schema
Buat file models/User.js:
Attendance Schema
Buat file models/Attendance.js:
CRUD Operations Dasar
Create (Membuat Data)
Read (Membaca Data)
Update (Memperbarui Data)
Delete (Menghapus Data)
Penggunaan dalam API
Contoh penggunaan dalam route Express:
Tips dan Best Practices
Selalu gunakan try-catch untuk menangani error database
Validasi data sebelum menyimpan ke database
Gunakan index untuk optimasi query
Jangan lupa untuk menutup koneksi database saat aplikasi berhenti
Batasi data yang dikembalikan (projection) untuk menghemat bandwidth
Gunakan populate dengan bijak karena dapat mempengaruhi performa
Simpan password dalam bentuk hash, jangan plain text
Gunakan timestamps untuk tracking waktu pembuatan/update document
Latihan
Buat fungsi untuk mendapatkan laporan presensi bulanan
Implementasikan fungsi search user berdasarkan nama atau email
Buat fungsi untuk mendapatkan statistik kehadiran (hadir, terlambat, izin, etc.)
Tambahkan validasi custom untuk format email
Implementasikan soft delete untuk user dan attendance
Last updated
Was this helpful?