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




4. Buat direktori baru untuk proyek, misalnya crud-api.
      - mkdir crud-api 
      - cd crud-api


 


5. Inisialisasi npm untuk membuat file package.json:
    - npm init -y


6. Instal semua dependency yang diperlukan:
    - 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;



11. Untuk menjalankan server, kamu bisa menggunakan nodemon agar otomatis restart server setiap kali ada perubahan kode.
    - npx nodemon server.js


12. GET Semua Mahasiswa: 
     - Method: GET 
     - URL: http://localhost:3000/mahasiswa


13. GET Mahasiswa Berdasarkan ID: 
     - Method: GET 
     - URL: http://localhost:3000/mahasiswa/:id




14.  POST Tambah Mahasiswa Baru: 
     - 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







TERIMAKASIH





Komentar

Postingan populer dari blog ini

TUTORIAL ERP ODOO (ENTERPRISE RESOURCE PLANNING)

LOCAL/REMOTE FILE INCLUSION (DASAR KEMANAN SIBER)

OSINT (DASAR KEAMANAN SIBER)