‫Jonas: Continuiamo a creare alcune funzioni di fabbrica,
‫questa volta per l'aggiornamento e per la creazione di alcune risorse.
‫E così, ora che sappiamo già come
‫funziona, è davvero semplice continuare a fare lo stesso
‫per l'aggiornamento.
‫Quindi esportazioni. updateOne,
‫e andiamo avanti e copiamo di nuovo il codice
‫dal controller del tour.
‫Va bene.
‫E ora abbiamo un sacco
‫di file aperti perché in realtà li
‫stiamo modificando tutti contemporaneamente.
‫Quindi copiamo questo e
‫incolliamo qui.
‫E quindi, ciò che ci interessa è, ancora, questa parte.
‫Va bene.
‫E ora, ovviamente, dobbiamo creare quella funzione di
‫fabbrica perché non vogliamo restituirla.
‫Invece, vogliamo restituire una
‫funzione, che a sua volta restituirà this.
‫Destra?
‫Quindi è molto semplice.
‫Usiamo una semplice funzione freccia in cui passiamo il
‫modello e quindi restituiamo implicitamente tutto ciò che viene dopo la freccia.
‫Quindi, tutto questo.
‫Va bene.
‫Quindi, proprio come prima, sostituiamo il modello
‫specifico con uno
‫generale, quindi sostituiamo tutto questo qui con il documento.
‫O meglio, con doc, come abbiamo fatto prima.
‫E qui non
‫c'è nessun documento, e poi quaggiù, dove effettivamente inviamo
‫i dati, sarebbe bello dargli effettivamente il nome della proprietà
‫dei dati che stiamo inviando.
‫Ad esempio, le recensioni, quindi il documento oi tour.
‫Va bene.
‫Ma è un po' troppo lavoro per implementarlo in questo momento.
‫E così, lo lascerò semplicemente così dove ho
‫inviato, di nuovo, i dati.
‫Va bene.
‫Così sono andati i nostri
‫dati qui, e poi la busta lì dentro sarà,
‫di nuovo, chiamata dati.
‫Va bene.
‫E quindi, questo dovrebbe funzionare
‫ora perché tutto il resto è davvero lo stesso.
‫E quindi, possiamo andare avanti, sbarazzarci di tutto questo
‫e dire semplicemente
‫fabbrica. updateOne, passa
‫al modello Tour e chiamalo un giorno.
‫Va bene?
‫Quindi, davvero semplice.
‫Quindi, la stessa cosa per gli utenti.
‫Quindi, di nuovo, abbiamo updateUser.
‫Questo percorso non è ancora implementato.
‫E quindi, sostituiamo semplicemente tutto questo qui con la
‫nostra funzione updateOne di fabbrica.
‫Va bene.
‫E così, proprio come prima, questa funzione updateUser
‫è solo per gli amministratori, ok?
‫E solo per aggiornare i dati che
‫non sono la password, perché ricorda, ogni volta che usiamo, dove si trova,
‫quindi ogni volta che usiamo findById e update, tutto
‫il middleware sicuro non viene eseguito.
‫Quindi ricorda come ne abbiamo parlato un paio di volte.
‫E quindi, ancora
‫una volta, è davvero importante non tentare di cambiare le
‫password qui utilizzando questo updateUser.
‫Va bene?
‫In realtà scriviamolo qui.
‫Con questo.
‫Grande.
‫E ora, finalmente,
‫mettiamolo anche nel controller di revisione.
‫Va bene.
‫Quindi esportazioni. updateReview,
‫e poi la nostra recensione.
‫Quindi quello è molto semplice.
‫Ora andiamo avanti e aggiungiamo anche questi percorsi a Postman.
‫Quindi abbiamo
‫Elimina recensione e ora aggiungiamola semplicemente qui come PATCH.
‫E la cosa di cui abbiamo bisogno è anche l'implementazione del
‫percorso nel router di revisione.
‫Quindi facciamolo anche noi.
‫Ma prima, lo salverò qui nelle recensioni.
‫Quindi aggiorna recensione.
‫Quindi qui, nei percorsi di revisione, dovremmo
‫aggiungere il metodo patch e quindi
‫reviewController. aggiornamentoRecensione.
‫Va bene.
‫Quindi diamo un'occhiata a una di queste
‫recensioni qui, diciamo questa, e aggiorniamo la valutazione a quattro.
‫Va bene.
‫Quindi il
‫corpo, impostalo su quattro.
‫E invialo ora.
‫Ok, e come possiamo vedere, otteniamo la nostra nuova recensione
‫con la valutazione aggiornata, proprio come previsto.
‫E ancora, ci occuperemo dell'autorizzazione un po' più
‫avanti nella sezione.
‫Per ora, volevo solo che funzionasse.
‫Quindi utenti, ora aggiorniamo anche gli utenti.
‫Va bene?
‫Quindi OTTIENI e PATCH.
‫Quindi prendiamo tutti gli utenti qui.
‫Diciamo questo.
‫E cambiamo il
‫nome
‫in Administrator, che prima era semplicemente admin.
‫Va bene?
‫E così, anche questo ha funzionato.
‫Ok, di nuovo, sto salvando tutto questo qui nella mia raccolta perché poi,
‫un po' più tardi,
‫posso effettivamente andare avanti e creare documentazione da
‫tutti i dati di questa raccolta che abbiamo qui.
‫Quindi Aggiorna
‫utente, metti quello qui e questo qui.
‫Perfetto.
‫Quindi l'aggiornamento degli utenti ora funziona per tutte
‫e tre le nostre risorse utilizzando la funzione di fabbrica.
‫E quindi, andiamo avanti e aggiungiamo il
‫prossimo, che sarà createOne.
‫Quindi esporta, createOne.
‫E ancora, passiamo al modello.
‫E da lì, creiamo una nuova funzione.
‫E questo potrebbe, ancora
‫una volta, copiarlo effettivamente dal Tour qui.
‫Va bene.
‫E quindi, ciò di cui abbiamo bisogno qui è solo questa parte.
‫Quindi modella e documenta.
‫E quaggiù, li chiamiamo di nuovo dati.
‫Va bene.
‫E così, in realtà è così.
‫Questa è la nostra funzione di fabbrica.
‫E così, di nuovo, veniamo qui e sostituiamolo.
‫Quindi fabbrica. createOne, Tour.
‫Quindi vedi che il nostro codice
‫nei controller ora sta diventando davvero pulito, giusto?
‫Ma in realtà, non saremo in grado di sostituire
‫tutte le funzioni che abbiamo qui con le fabbriche, perché altrimenti
‫non avremmo nemmeno bisogno di questo
‫file del controller, giusto?
‫Potremmo quindi semplicemente creare questi gestori al volo, in
‫pratica, nel file del router, giusto?
‫E quindi, potremmo praticamente saltare questo intero
‫passaggio del file del controller.
‫Ma ancora una volta, ne
‫abbiamo ancora bisogno perché abbiamo altre cose lì dentro.
‫Ad esempio, questi metodi qui per
‫ottenere le statistiche del tour o questo piano
‫mensile, e sì.
‫Quindi ha senso tenere effettivamente questo file, ok?
‫Quindi, per gli
‫Utenti, in realtà non abbiamo bisogno di createOne
‫perché, per creare nuovi
‫utenti, abbiamo già la funzione di
‫iscrizione e non possiamo davvero sostituirla con
‫una fabbrica perché è davvero diversa da questa generica.
‫Va bene?
‫Ma possiamo farlo nel controller di revisione, ok?
‫Quindi, in pratica, vogliamo sostituire questo createReview.
‫Ora vedi che anche
‫in questo abbiamo qualche passaggio aggiuntivo.
‫Quindi abbiamo questo codice che
‫non è nemmeno nella nostra funzione generica createOne.
‫E quindi, come possiamo risolverlo?
‫Bene, possiamo effettivamente creare un
‫middleware che verrà eseguito prima di createReview, ok?
‫E quindi, questo in realtà lo rende anche un po' più disaccoppiato.
‫Quindi, in pratica, questo codice qui avrà una sua funzione
‫e sarà
‫davvero disaccoppiato da createReview, perché in realtà
‫non ha molto a che fare
‫con la creazione della recensione.
‫Imposta semplicemente alcuni dati, giusto?
‫Quindi, chiamiamo questo set tour e ID utente.
‫Quindi richiesta, ah, manca la risposta.
‫Va bene?
‫E tutto ciò
‫che faremo qui è sostanzialmente impostare questi ID sul corpo
‫e poi passare direttamente al prossimo
‫middleware, dove verrà effettivamente creata la revisione.
‫Bene?
‫Quindi, prima
‫di dimenticarlo, aggiungiamo effettivamente questo middleware.
‫Quindi nei percorsi di revisione, è proprio qui nel post.
‫Quindi reviewController, setTourUserIds.
‫Va bene?
‫Quindi ancora un'altra funzione middleware in questo stack.
‫Va bene.
‫Ad ogni modo, allora liberiamoci di quello che abbiamo qui
‫perché questo è facilmente
‫sostituibile con la nostra funzione di fabbrica, ancora una volta.
‫Quindi createOne, quindi Review, e il gioco è fatto.
‫Va bene.
‫E solo per testare se funziona
‫ancora, andiamo avanti e creiamo una nuova recensione su Tour.
‫Va bene?
‫E per questo, abbiamo bisogno degli ID del tour,
‫quindi diciamo anche Ottieni tutti i tour.
‫E ora otteniamo che l'appartenenza dell'utente non esiste più, quindi andiamo semplicemente
‫avanti e accediamo di nuovo.
‫Quindi prendi un nuovo token qui.
‫E così, ci siamo, come amministratore.
‫Quindi ora, Ottieni tutti i tour, ci siamo.
‫Scegliamone solo uno.
‫Quindi diciamo, l'escursionista della foresta.
‫Penso che questo abbia già alcune recensioni, vero?
‫Oh no, non è così.
‫Quindi questo è buono per provarlo ora.
‫E così, Crea una nuova recensione in tour.
‫Ricorda, dobbiamo cambiare l'ID qui.
‫E ora possiamo pubblicare
‫questa recensione solo con la valutazione e la recensione.
‫Ma penso che in
‫realtà non funzionerà perché abbiamo effettuato l'accesso come
‫amministratore e solo gli utenti regolari possono pubblicare recensioni.
‫Va bene?
‫Va bene, allora continuiamo a farlo qui.
‫Strabiliante.
‫Ma avremo questo errore che stavo appena dicendo.
‫Quindi non hai il permesso di esibirti.
‫Quindi, dobbiamo accedere
‫di nuovo, questa volta come utente diverso.
‫E diamo un'occhiata a quale abbiamo, in realtà.
‫Ah ok.
‫Quindi usiamo solo test.
‫O forse test era quello con la password sbagliata.
‫Ma vediamo.
‫Ah sì.
‫Quindi proviamo con testuser.
‫E questo funziona.
‫E quindi, in realtà, possiamo procedere e cancellare
‫quest'altro perché ho dimenticato la sua password.
‫Va bene.
‫E in questo caso non c'è problema.
‫Possiamo semplicemente eliminare gli utenti a nostro piacimento poiché siamo
‫solo in fase di sviluppo.
‫Va bene?
‫Ora dovremmo essere in grado di aggiungere effettivamente questa recensione.
‫E infatti, ci siamo.
‫Perfetto.
‫Quindi questo conclude questa lezione.
‫Tutto ciò che dobbiamo fare
‫nel prossimo è quindi creare le
‫funzioni di fabbrica per ottenerne uno e ottenere tutti i documenti
‫di una determinata risorsa.