Waarom Database?

Tot nu toe geven routes alleen tijdelijke data terug. Als je server herstart, is alles weg. Een database slaat data permanent op.

💡 Analogie

Database = Excel bestand dat altijd online staat. Je server kan data opslaan, ophalen, aanpassen en verwijderen. Ook als je computer uit staat blijft data bestaan.

Waarom MongoDB Atlas?

  • Gratis voor kleine projecten
  • Online - geen installatie nodig
  • Altijd beschikbaar - ook als laptop uit staat
  • Makkelijk te gebruiken

MongoDB Atlas Setup

Stap 1: Account aanmaken

  1. Ga naar mongodb.com/cloud/atlas/register
  2. Maak gratis account aan (Google/GitHub mag)
  3. Kies M0 FREE cluster (gratis!)
  4. Selecteer regio dichtbij (bijv. Frankfurt)
  5. Geef cluster een naam

Stap 2: Database User

Je app heeft username + wachtwoord nodig. Dit is NIET jouw Atlas account, maar aparte gebruiker voor je app.

Ga naar Database Access:

  1. Klik "Add New Database User"
  2. Kies Password authentication
  3. Username: bijv. myapp
  4. Klik "Autogenerate Secure Password"
  5. KOPIEER EN BEWAAR WACHTWOORD! (zie je maar 1x)
  6. Privileges: Read and write to any database
  7. Klik "Add User"

Let op!

Plak wachtwoord in Notitieblok. Je hebt het zo nodig!

Stap 3: Network Access

Standaard blokkeert MongoDB alle verbindingen. Stel in dat jouw computer mag verbinden.

Ga naar Network Access:

  1. Klik "Add IP Address"
  2. Klik "Allow Access from Anywhere"
  3. Klik "Confirm"

💡 Waarom "Anywhere"?

Voor development makkelijk. Je kunt overal werken: thuis, school, vrienden.

Stap 4: Connection String

Ga terug naar Database:

  1. Klik "Connect" bij je cluster
  2. Kies "Connect your application"
  3. Selecteer Node.js
  4. Kopieer connection string

Connection string ziet er zo uit:

mongodb+srv://admin:<password>@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority

Connection String in .env

De connection string is het "adres" van je database. Plak in .env, maar pas 2 dingen aan!

Wat je hebt gekopieerd:

mongodb+srv://admin:<password>@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority

Stap 1: Vervang <password>

Plak je wachtwoord tussen admin: en @cluster

Stap 2: Voeg database naam toe

Voeg /workout-db toe tussen .net/ en ?

Eindresultaat in .env:

# .env
PORT=4000
MONGO_URI=mongodb+srv://admin:jouwWachtwoord@cluster0.xxxxx.mongodb.net/workout-db?retryWrites=true&w=majority

Voorbeeld met echt wachtwoord:

MONGO_URI=mongodb+srv://admin:MyP@ssw0rd123@cluster0.ab1cd.mongodb.net/workout-db?retryWrites=true&w=majority

Let op: geen spaties in de hele string!

Werkt het niet?

Check:

  • Wachtwoord tussen admin: en @cluster?
  • /workout-db tussen .net/ en ??
  • Geen spaties in hele MONGO_URI?

Mongoose Installeren

Mongoose maakt praten met MongoDB veel makkelijker.

💡 Analogie

Mongoose = vertaler tussen jou en MongoDB. In plaats van ingewikkelde database commando's, gebruik je simpele JavaScript functies.

npm install mongoose

Wat doet Mongoose?

  • Validatie - Checkt of data correct is
  • Simpele syntax - Workout.find() is makkelijk
  • Timestamps - Voegt "wanneer gemaakt" toe
  • Foutmeldingen - Duidelijke errors

Database Verbinding in server.js

Update server.js om met MongoDB te verbinden:

// server.js
import express from 'express';
import mongoose from 'mongoose';
import workoutRoutes from './src/routes/workoutRoutes.js';

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

// Middleware
app.use(express.json());

// Routes
app.use('/api/workouts', workoutRoutes);

// Verbind met MongoDB en start server
mongoose.connect(process.env.MONGO_URI)
  .then(() => {
    console.log('Verbonden met MongoDB');
    
    // Start server ALLEEN als database gelukt is
    app.listen(PORT, () => {
      console.log(`Server draait op http://localhost:${PORT}`);
    });
  })
  .catch((error) => {
    console.error('Database verbinding mislukt:', error.message);
  });
Wat gebeurt hier?
  • import mongoose - Laad Mongoose
  • mongoose.connect() - Verbind met MongoDB
  • .then() - Als verbinding gelukt
  • .catch() - Als verbinding mislukt
  • Server start PAS na database verbinding

Test verbinding

npm run dev

Je ziet:

Verbonden met MongoDB
Server draait op http://localhost:4000

Bekijk database in Atlas

Check of alles goed staat. Kijk naar deze video om je database te bekijken in MongoDB Atlas.

In de video zie je:

  • Naar "Database" gaan in Atlas
  • Op "Browse Collections" klikken
  • Database en collecties zien

💡 Let op in video

Video gebruikt require(), jullie gebruiken import. Verder is uitleg hetzelfde!

Problemen oplossen

❌ "MongoNetworkError: Failed to connect"

Betekenis: App kan niet verbinden met MongoDB Atlas

Check:

  • MONGO_URI correct in .env? Geen spaties!
  • Wachtwoord goed? (tussen ://admin: en @cluster)
  • /workout-db toegevoegd voor vraagteken?
  • Network Access op "Allow Access from Anywhere"?
  • Werkt internet?

❌ Server start niet

Betekenis: Database verbinding mislukt, dus server start niet

Check:

  • Error boven "Server draait..."? Lees die error!
  • MongoDB Atlas online? Check website
  • mongoose.connect() VOOR app.listen()?

❌ "Cannot find module 'mongoose'"

Betekenis: Mongoose niet geïnstalleerd

Oplossing: npm install mongoose

Checklist

✅ Check of je hebt:

  • MongoDB Atlas account (gratis M0 cluster)
  • Database user + wachtwoord opgeslagen
  • Network Access op "Anywhere"
  • Connection string in .env
  • Database naam (/workout-db) toegevoegd
  • npm install mongoose gedaan
  • server.js verbindt met MongoDB
  • "Verbonden met MongoDB" in console
  • Video gekeken en database gecheckt

Volgende Stap

Database is gekoppeld! Tijd om model en schema te maken.

Models & Schemas →

Maak data structuren en test met Postman