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
- Ga naar mongodb.com/cloud/atlas/register
- Maak gratis account aan (Google/GitHub mag)
- Kies M0 FREE cluster (gratis!)
- Selecteer regio dichtbij (bijv. Frankfurt)
- 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:
- Klik "Add New Database User"
- Kies Password authentication
- Username: bijv.
myapp - Klik "Autogenerate Secure Password"
- KOPIEER EN BEWAAR WACHTWOORD! (zie je maar 1x)
- Privileges: Read and write to any database
- 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:
- Klik "Add IP Address"
- Klik "Allow Access from Anywhere"
- Klik "Confirm"
💡 Waarom "Anywhere"?
Voor development makkelijk. Je kunt overal werken: thuis, school, vrienden.
Stap 4: Connection String
Ga terug naar Database:
- Klik "Connect" bij je cluster
- Kies "Connect your application"
- Selecteer Node.js
- 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-dbtussen.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);
});
import mongoose- Laad Mongoosemongoose.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-dbtoegevoegd 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()VOORapp.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 mongoosegedaan- 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.
Maak data structuren en test met Postman