DATABASE ADAVANCE
Membuat API CRUD dengan Node.js dan MongoDB
1. Buat database di mongodb dengan nama polibest dan buat collection dengan nama mahasiswa
2. Isikan sampel data mahasiswa: nama, umur, jurusan dan ipk
3. Buka VSCode, open folder arahkan ke C:\xampp\htdocs dan view terminal
- mkdir crud-api
- cd crud-api
- npm init -y
- npm install express mongoose nodemon body-parser
7. Buat struktur folder berikut:
crud-api/
│
├── models/
│
└── mahasiswa.js
├── routes/
│
└── mahasiswa.js
├── server.js
8. Buat file server.js di direktori utama untuk menghubungkan ke MongoDB dan memulai server
Express.
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
// Inisialisasi Express
const app = express();
app.use(bodyParser.json());
// Koneksi ke MongoDB (database: polibest)
mongoose.connect('mongodb://localhost:27017/polibest', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', (error) => console.error(error));
db.once('open', () => console.log('Connected to Database'));
// Import Routes
const mahasiswaRoutes = require('./routes/mahasiswa');
app.use('/mahasiswa', mahasiswaRoutes);
// Jalankan Server
app.listen(3000, () => console.log('Server running on port 3000'));
9. Buat file mahasiswa.js di dalam folder models/. Ini adalah model untuk koleksi mahasiswa di
MongoDB.
const mongoose = require('mongoose');
const mahasiswaSchema = new mongoose.Schema({
nama: {
type: String,
required: true
},
umur: {
type: Number,
required: true
},
jurusan: {
type: String,
required: true
},
ipk: {
type: Number,
required: true
}
});
// Model dan nama koleksi 'mahasiswa'
module.exports = mongoose.model('Mahasiswa', mahasiswaSchema, 'mahasiswa');
10. Buat file mahasiswa.js di folder routes/ untuk mendefinisikan semua operasi CRUD.
const express = require('express');
const router = express.Router();
const Mahasiswa = require('../models/mahasiswa');
// 1. Tampilkan Semua Mahasiswa (GET)
router.get('/', async (req, res) => {
try {
const mahasiswa = await Mahasiswa.find();
res.json(mahasiswa);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// 2. Tampilkan Satu Mahasiswa Berdasarkan ID (GET)
router.get('/:id', async (req, res) => {
try {
const mahasiswa = await Mahasiswa.findById(req.params.id);
if (!mahasiswa) return res.status(404).json({ message: 'Mahasiswa not found' });
res.json(mahasiswa);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// 3. Tambah Mahasiswa Baru (POST)
router.post('/', async (req, res) => {
const mahasiswa = new Mahasiswa({
nama: req.body.nama,
umur: req.body.umur,
jurusan: req.body.jurusan,
ipk: req.body.ipk
});
try {
const newMahasiswa = await mahasiswa.save();
res.status(201).json(newMahasiswa);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 4. Update Data Mahasiswa (PATCH)
router.patch('/:id', async (req, res) => {
try {
const mahasiswa = await Mahasiswa.findById(req.params.id);
if (!mahasiswa) return res.status(404).json({ message: 'Mahasiswa not found' });
if (req.body.nama != null) mahasiswa.nama = req.body.nama;
if (req.body.umur != null) mahasiswa.umur = req.body.umur;
if (req.body.jurusan != null) mahasiswa.jurusan = req.body.jurusan;
if (req.body.ipk != null) mahasiswa.ipk = req.body.ipk;
const updatedMahasiswa = await mahasiswa.save();
res.json(updatedMahasiswa);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 5. Hapus Mahasiswa (DELETE)
router.delete('/:id', async (req, res) => {
try {
const mahasiswa = await Mahasiswa.findById(req.params.id);
if (!mahasiswa) return res.status(404).json({ message: 'Mahasiswa not found' });
await mahasiswa.remove();
res.json({ message: 'Mahasiswa deleted' });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
module.exports = router;
- npx nodemon server.js
- Method: GET
- URL: http://localhost:3000/mahasiswa
13. GET Mahasiswa Berdasarkan ID:
- Method: GET
- URL: http://localhost:3000/mahasiswa/:id
- Method: POST
- URL: http://localhost:3000/mahasiswa
- Body (raw JSON):
json
{
"nama": "Budi",
"umur": 22,
"jurusan": "Bisnis Digital",
"ipk": 3.9
}
15. PATCH Update Mahasiswa:
- Method: PATCH
- URL: http://localhost:3000/mahasiswa/:id
- Body (raw JSON):
json
{
"nama": "Andi",
"umur": 23
}
16. DELETE Hapus Mahasiswa:
- Method: DELETE
- URL: http://localhost:3000/mahasiswa/:id
Komentar
Posting Komentar