WebOntwikkeling 2024
DigitAP
  • Introductie
  • Tooling
    • Devcontainers
    • Git
    • Terminal en bash
  • NodeJS + TypeScript
    • Wat is NodeJS?
    • Waarom TypeScript?
    • Nieuw project
    • Input lezen
    • Type Systeem
      • Basic types
      • Arrays
      • Interfaces
      • Functions
    • Exceptions
    • Modules
    • Asynchroon Programmeren
      • Promises
      • Async/Await
      • Fetch
      • Extra voorbeelden
  • Express.js
    • Wat is een backend framework?
    • Basis
    • Nodemon
    • Statische Bestanden
    • EJS
    • Request
      • GET Request
      • POST Request
      • Multi-part form data
    • Response
    • Router
    • Middleware
    • Deployment
  • MongoDB
    • Wat is MongoDB?
    • MongoDB driver
    • Insert
    • Find
    • Limit & Sort
    • Query Operators
    • Update
    • Delete
    • Text Search
    • Gebruik in Express.js
      • CRUD
  • Security & Testing
    • Environment Variables
    • Cookies
    • Hashing & Encryptie
    • Sessions
      • Session Based Login
    • JWT Tokens
      • JWT NPM package
      • Tokens veilig opslaan
      • Token Based Login
    • Testing
  • Labos
    • 1. Tooling
    • 2. Basis
      • Hello Name
      • BMI Calculator
      • BMI Calculator Multi
      • Interest Calculator
      • Uren en Minuten
      • Wisselgeld
      • Name from Email
      • Text Box
    • 3. Arrays
      • Som van getallen
      • Puntenboek
      • Rot13
      • Pokemon Team
      • Todo List String
      • Tick Tac Toe
    • 4. Interfaces & functies
      • Interfaces
        • Recepten
        • Movies Objects
        • Todo List Objects
      • Functies
        • Math Fun
        • Short Notation
        • Array Sum
        • Movies Functions
        • Filter Numbers
        • At Least Two
    • 5. Async & fetch
      • Fake Fetch
      • Promise All
      • Slow Sum
      • Todo List Fetch
      • Cocktails Promise All
      • Bitcoin API
      • Joke API
      • School API
      • Cocktails API
      • Unix Timestamp API
    • 6. Modules en NPM Packages
      • Math Module
      • Export Interfaces
      • Cowsay Module
      • Cat GPT
      • Rainbow Chalk
    • 7. Express
      • Hello Express
      • DadJoke Express
      • Bitcoin current
    • 8. EJS + Static
      • Hello Express EJS
      • Cat Static
      • Maaltafels
      • Newspaper
    • 9. Get Request
      • Hello Query
      • Math Service
      • Newspaper Route
      • Newspaper Search
      • Steam
    • 10. Post Request
      • Pet Shelter
      • Redirect Form
      • Contact Form
    • 11. Router en Middleware
      • Router Combi
      • Utility Middleware
      • Rate Limiter
    • 12. Herhaling
      • Twitter
      • Word Guess
    • 13. Mongo Basics
      • Guestbook
      • MoviesDB
      • Pokemon Team
    • 14. Mongo Queries
      • Pet Shelter
      • Games DB
    • 15. Mongo + Express
      • Pet Shelter Express
      • Guestbook Express
      • Pokemon Team Express
    • 16. CRUD
      • Users CRUD
      • Pokedex
    • 17. Session & Cookies
      • Shopping Cookie
      • View Counter Cookies
      • View Counter Sessions
    • 18. Session based login
      • Login Express
      • Pokedex Express Sessions
    • 19. Token based login
      • JWT Sign
      • Login Express JWT
    • 20. Testing
      • Math Test
      • String Test
      • Math Express Test
      • Form Express Test
      • Pet Shelter Express Test
    • 21. Herhaling
      • Youtube Favorites
      • Beerster
    • Extra oefeningen
      • DNA Match
      • View Counter
      • Hogwarts Express CRUD
  • Project
    • Voorbereiding (devcontainer + github)
    • Semester 2
      • Milestone 1 - Terminal App
      • Milestone 2 - Express
      • Milestone 3 - MongoDB
      • Milestone 4 - Security
Powered by GitBook
On this page
  • Doel
  • Wat is er al voorzien?
  • Opdracht
  • 1. Create
  • 2. Update
  • 3. Delete
  • Gegevensstructuur
  • Te bewerken of toe te voegen bestanden
  • Wat wordt er verwacht?
Export as PDF
  1. Labos
  2. Extra oefeningen

Hogwarts Express CRUD

PreviousView CounterNextVoorbereiding (devcontainer + github)

Last updated 5 days ago

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 bestand.

Wat is er al voorzien?

  • Een overzichtspagina met zoek- en sorteermogelijkheden

  • Een detailpagina per spreuk

  • Een MongoDB-verbinding

  • Een datastructuur Spell en een basistemplate met EJS

Opdracht

Breid de bestaande toepassing uit met de volgende functionaliteit:

1. Create

  • Voeg een GET-route toe voor /spells/create die 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.FIELDS en res.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/update die 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/delete die een spreuk verwijdert.

  • Voeg op de overzichtspagina een verwijderknop toe per rij.

Gegevensstructuur

Gebruik de bestaande types:

  • Spell voor de data

  • SpellField voor de formuliervelden

Ondersteunde invoertypes zijn: text, number, en spelltype (een dropdown).

Te bewerken of toe te voegen bestanden

  • index.ts: routes toevoegen

  • database.ts: functies schrijven voor createSpell, updateSpellById, deleteSpellById

  • views/createSpell.ejs en views/updateSpell.ejs: formulieren bouwen

  • views/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 FIELDS en SPELL_TYPES om inputs correct te genereren

starter.zip