Opdracht: Spreuken beheren in een Harry Potter-toepassing
Doel
Je breidt een bestaande webtoepassing uit die een lijst van Harry Potter-spreuken toont. Je voegt functionaliteit toe om spreuken aan te maken, aan te passen en te verwijderen. De gegevens worden opgeslagen in een MongoDB-database. De front-end is opgebouwd met EJS.
Je kan het bestaande project vinden in het starter.zip bestand.
Wat is er al voorzien?
- Een overzichtspagina met zoek- en sorteermogelijkheden
- Een detailpagina per spreuk
- Een MongoDB-verbinding
- Een datastructuur
Spellen een basistemplate met EJS
Opdracht
Breid de bestaande toepassing uit met de volgende functionaliteit:
1. Create
- Voeg een GET-route toe voor
/spells/createdie een formulier toont. - Voeg een POST-route toe die een nieuwe spreuk aanmaakt in de database.
- Genereer het formulier dynamisch op basis van
res.locals.FIELDSenres.locals.SPELL_TYPES. - Ken automatisch een uniek ID toe aan de nieuwe spreuk (hoogste bestaande ID + 1).
2. Update
- Voeg een GET-route toe voor
/spells/:id/updatedie het bestaande formulier toont, vooraf ingevuld met de huidige gegevens. - Voeg een POST-route toe die de aangepaste gegevens opslaat.
- Het
id-veld moet read-only zijn.
3. Delete
- Voeg een POST-route toe voor
/spells/:id/deletedie een spreuk verwijdert. - Voeg op de overzichtspagina een verwijderknop toe per rij.
Gegevensstructuur
Gebruik de bestaande types:
Spellvoor de dataSpellFieldvoor de formuliervelden
Ondersteunde invoertypes zijn: text, number, en spelltype (een dropdown).
Te bewerken of toe te voegen bestanden
index.ts: routes toevoegendatabase.ts: functies schrijven voorcreateSpell,updateSpellById,deleteSpellByIdviews/createSpell.ejsenviews/updateSpell.ejs: formulieren bouwenviews/index.ejs: knoppen toevoegen voor "Create", "Update" en "Delete"
Wat wordt er verwacht?
- Een werkend formulier voor het toevoegen van nieuwe spreuken
- Mogelijkheid om bestaande spreuken te bewerken
- Mogelijkheid om spreuken te verwijderen via de overzichtspagina
- Alle formulieren gebruiken
FIELDSenSPELL_TYPESom inputs correct te genereren