Ga naar de hoofdinhoud

3. Mongoose

10-11-2023Ongeveer 4 minutenOngeveer 577 woorden

3. Mongoose

We gaan onze api om boeken op te halen ombouwen voor MongoDB. We gaan enkele zaken wijzigen die het Prisma stuk kapot zullen doen, maak eventueel een backup van je oefening voor je begint zodat je alle gemaakte stukken voor Prisma niet kwijt bent.

API testen met Postman

Je test nog steeds met Postman (zie vorige les). Je kan met Postman makkelijk optionele parameters meegeven.

Opzet

Vertrek van je oefening van les 2. Indien je deze niet hebt kan je ook van de startbestanden van les 1 vertrekken, houd er rekening mee dat je dan veel opnieuw moet doen en instellen.

Let op: voor de initiële configuratie van Docker heb je de compose.yaml bestanden nodig in de startbestanden van de theorie van les 2 en 3. Heb je de theorie mooi meegedaan dan moet je hier niets meer voor doen (je hebt dit bestand dan niet per se nodig voor de oefening), heb je dat niet gedaan dan moet je dit stukje van de theorie eerst afwerken voor je begint aan de oefening.

In de startbestanden van deze les vind je een json bestand terug om de data te importeren in MongoDB.

Startbestanden

De opzet loopt gelijk aan de theorie, hieronder worden enkel de stappen vermeld, de uitleg ervan check je uiteraard in de theorie.

  • Zet de docker container van het voorbeeld aan
  • Start MongoDB Compass
  • Maak een nieuwe collectie 'series' aan
  • Importeer de JSON file uit de startbestanden in MongoDB Compass
  • pnpm add mongoose
  • Gebruik de inhoud van de tsconfig.json van de startbestanden van de theorie

Models en schema

Pas de interface 'ISeries' aan zodat deze beantwoord aan alle velden. Check in MongoDB Compass welke velden je nodig hebt en check in de IMovie interface in het voorbeeld hoe je dat best aanpakt.

Maak ook een schema aan voor ISeries. Zorg ervoor dat de title verplicht mee te geven is en alle urls steeds met 'http' moeten beginnen.

Opzet databank

Pas de .env file aan en zorg voor de correcte database url (dit is dezelfde als in het voorbeeld). Zet eventueel de database URL van Prisma gewoon in commentaar. Zorg er ook voor dat de .env file kan ingeladen worden.

Initialiseer Mongoose in je app.ts.

Data layer (dal)

Maak in de dal een nieuw bestand aan 'seriesesMDB.ts'. Zet hierin alvast de standaard CRUD methodes om je series op te halen met Mongoose (getAll, getById, create, update, delete).

API routes aanpassen

Pas de routes voor de series aan zodat je gebruikt maakt van Mongoose in plaats van Prisma. De boeken laat je voor wat ze zijn (zet in commentaar bij fouten). Maak bij het aanmaken van de routes gebruik van de utils om te checken op validatie fouten en null (de 2 methodes daarvoor neem je over uit de theorie). Alle include en zoekparameters mag je in deze stap weghalen.

API uitbreiden

Maak onderstaande filters aan voor de 'getAll' methode. Zorg ervoor dat de gebruiker kan kiezen of de filters gecombineerd worden met EN of OF.

  • Zoeken op de titel van een serie (niet hoofdlettergevoelig, substring mogelijk)
  • Maak een filter op genre
  • Maak een filter op het land van herkomst van de auteur -> bijvoorbeeld alle series die een auteur hebben die geboren is in USA (op 1 land zoeken is genoeg)

Uitgewerkte oplossingen