‫Narratore: Ora miglioriamo l'implementazione
‫del percorso annidato che abbiamo codificato nell'ultima lezione.
‫E
‫per questo, useremo una speciale funzione espressa avanzata.
‫Quindi, come ricorderete,
‫nell'ultimo video abbiamo implementato un semplice percorso di
‫post annidati, quindi solo questo qui.
‫Destra. E quindi questo significa che il percorso
‫di revisione è in qualche modo all'interno del percorso del tour.
‫E ancora, perché le recensioni in un certo senso appartengono ai tour.
‫Destra?
‫E quindi questa è una cosa molto comune da fare nel design API.
‫Ora, il problema con questa implementazione è che è,
‫ovviamente, un po' disordinato.
‫E questo perché abbiamo inserito un percorso per la creazione di
‫una recensione nel tour router.
‫Semplicemente perché un percorso inizia con uno slash tour.
‫Quindi c'è un po'
‫di confusione, e ciò che
‫è anche confuso è che abbiamo qualcosa di molto simile
‫a questo qui, anche nel nostro percorso di revisione.
‫Quindi, fondamentalmente questo qui.
‫Quindi, quando creiamo una nuova recensione senza il percorso annidato,
‫questa parte del codice qui è in realtà esattamente uguale
‫a questa. Destra?
‫E così, oltre a creare un
‫po' di confusione, abbiamo anche un codice duplicato che dovremmo
‫mantenere in due posti separati nel caso in cui volessimo cambiare qualcosa.
‫E così di nuovo, è una pessima pratica.
‫E quindi ora risolviamo questo problema utilizzando una funzione
‫express avanzata chiamata mergeParams.
‫Quindi, prima di tutto, rimuoviamo questo codice
‫qui che in realtà non appartiene al router del tour.
‫Successivamente, importeremo effettivamente il router di revisione
‫in questo tour router.
‫Bene?
‫Quindi in questo momento stiamo importando il controller
‫di revisione, ma in realtà vogliamo il router di revisione.
‫Quindi liberiamoci di questo,
‫e in realtà lo eliminerò del tutto.
‫E
‫ora, il router
‫di revisione.
‫E va bene.
‫Quindi, prendiamo effettivamente questo codice e mettiamolo qui in alto, solo
‫così possiamo
‫vedere cosa stiamo facendo, perché
‫in realtà creeremo del nuovo codice
‫proprio qui in alto.
‫E quindi quello che faremo
‫qui
‫è dire router. uso.
‫E quindi fondamentalmente diremo che questo router dovrebbe
‫utilizzare il router di
‫revisione nel caso in cui incontrasse un percorso come questo.
‫E
‫rivedi i percorsi.
‫L'ho chiamato route o router?
‫Dovrebbe essere chiamato router.
‫Bene?
‫Quindi, tieni presente che un router stesso è
‫in realtà solo un middleware.
‫Quindi possiamo usare il metodo use su di esso,
‫e quindi dire che per questo percorso
‫specifico qui, vogliamo invece usare il router di revisione.
‫Bene?
‫E quindi questo è in realtà di nuovo il montaggio di un router.
‫Quindi, se dai un'occhiata, qui
‫nell'app. js, in
‫realtà è esattamente quello che abbiamo fatto.
‫Così abbiamo fatto. use,
‫quindi l'URL e
‫infine il router.
‫E quindi qui, quello che
‫stiamo facendo è in realtà la stessa identica cosa.
‫Quindi questo è il router del tour, quindi diciamo bene
‫ogni volta che trovi un URL come questo, beh,
‫allora usa semplicemente il router di revisione.
‫E quindi, proprio ora, quando abbiamo un URL come
‫questo, inizierà entrando nel router del tour qui, ok, perché, di
‫nuovo inizia con i tour slash, ok, quindi
‫in
‫pratica viene reindirizzato al router del tour,
‫quindi quando raggiunge il router del
‫tour, quindi corrisponderà a questo
‫URL qui e quindi verrà nuovamente reindirizzato al router di revisione.
‫E in questo modo, abbiamo
‫il router del tour e il router
‫della recensione ben separati e disaccoppiati l'uno dall'altro.
‫Ma ora, in realtà manca ancora un pezzo
‫perché in questo momento questo router di
‫revisione qui non ha accesso a questo parametro dell'id del tour, ok.
‫E quindi ora dobbiamo abilitare il
‫router di revisione per accedere effettivamente a questo parametro anche qui.
‫Quindi passiamo ora al router di revisione, ok.
‫Ed è qui che entra in gioco
‫il mergeParams medico di cui
‫ho parlato all'inizio.
‫Quindi qui, nell'espresso. router, possiamo specificare
‫alcune opzioni e qui tutto
‫ciò che dobbiamo fare è impostare mergeParams
‫su true.
‫E questo è tutto.
‫Ma perché abbiamo davvero bisogno di questo qui?
‫Bene, è perché, per
‫impostazione predefinita, ogni router ha
‫accesso solo ai parametri dei suoi percorsi specifici, giusto.
‫Ma qui, in questo percorso, quindi in questo URL per questo
‫post, ovviamente non c'è nessun ID tour.
‫Ma vogliamo ancora ottenere l'accesso all'id
‫del tour che era in questo altro router, giusto.
‫Quindi questo qui.
‫Quindi, per accedere a quel parametro
‫in questo
‫altro router, dobbiamo unire fisicamente i parametri, ok.
‫E questo è ciò che fa mergeParams, impostato su true.
‫E quindi ora, non importa se otteniamo un percorso
‫come questo, quindi copiamolo qui, di
‫nuovo è più facile visualizzarlo con un esempio.
‫E così di nuovo, non importa se otteniamo una
‫via come questa,
‫o una via come questa, ora finirà tutto in questo gestore qui, ok.
‫Quindi, alla fine, fondamentalmente a questa funzione di gestore.
‫E di nuovo funziona perché tutti i
‫percorsi che iniziano con questo tipo
‫di schema qui verranno reindirizzati a questo router
‫esattamente in questa riga di codice qui, ok.
‫Quindi abbiamo reindirizzato al router di revisione
‫qui e quindi lì dentro corrisponderà a questo percorso esatto,
‫ok.
‫E grazie ai parametri
‫di unione, otteniamo quindi l'accesso a
‫questo ID che in realtà proviene dall'altro router precedente.
‫Grande.
‫Quindi facciamo un po' di
‫pulizia qui, in realtà
‫sbarazziamoci di
‫questo,
‫questo qui, e proviamolo velocemente ora.
‫Quindi creerò una nuova recensione qui e
‫proveremo un altro strumento questa volta.
‫Quindi il vagabondo di città.
‫E tutto ciò che
‫dobbiamo fare è cambiare quell'id proprio qui nell'URL, giusto.
‫Quindi, il punteggio sarà
‫tre,
‫e poi andava bene così.
‫Va bene, quindi questa recensione sarà ancora fatta
‫con Jonas, quindi da questo account, ok,
‫perché è
‫ancora quello che è ancora connesso in questo momento, ok.
‫Quindi, inviamo
‫quello, e infatti qui otteniamo il tour che abbiamo appena specificato,
‫e sempre lo stesso utente.
‫Quindi è di nuovo solo per assicurarti di controllare il tour
‫per vedere se ora riceve questa
‫recensione e sì, l'ha fatto.
‫E così quel trucco dei parametri di unione, che
‫abbiamo appena implementato, in realtà funziona
‫bene e come previsto.
‫Ora per vederlo in azione, ancora meglio,
‫adatteremo la funzione henry per
‫ottenere tutte le recensioni per un tour specifico
‫nel prossimo video.