‫Istruttore: Quindi,
‫in questo video, continueremo a implementare la risorsa della revisione
‫e questa volta implementando un endpoint
‫per ottenere tutte le recensioni e anche per creare nuove recensioni.
‫E quindi, a questo punto, stiamo fondamentalmente solo rivedendo cose
‫che abbiamo già imparato in precedenza nelle sezioni precedenti.
‫E così, in questo video, ho un'altra sfida per te.
‫Quindi, in pratica, voglio che tu implementi entrambi questi endpoint,
‫quindi un endpoint per ottenere
‫tutte le revisioni e un endpoint per creare nuove recensioni da solo.
‫Bene?
‫Quindi crea il file
‫del controller, quindi crea le funzioni del
‫controller e quindi crea anche i percorsi nel file di revisione dei percorsi.
‫E poi, entro la fine del corso, crea alcune
‫nuove recensioni e recuperale anche dal database
‫utilizzando Ottieni tutte le recensioni.
‫Tutto bene.
‫Quindi, per favore, metti in pausa il video ora e mettiti al lavoro.
‫Tutto bene.
‫E ora è il mio turno di implementarlo effettivamente, e
‫sto iniziando con le funzioni del controller.
‫Quindi proprio qui
‫creiamo il controller di
‫revisione punto js, quindi ovviamente iniziamo richiedendo la revisione.
‫Quindi un livello superiore, quindi i modelli, quindi rivedi il modello.
‫Quindi ottieni Tutte le recensioni e useremo lo
‫stesso nome di sempre.
‫Destra?
‫Quindi sappiamo già che
‫questa sarà una funzione asincrona perché qui
‫avremo a
‫che fare con il database e dobbiamo anche racchiudere
‫l'intera funzione nel catch Async.
‫Quindi prendi Async, penso che si chiami così.
‫Richiedere.
‫Tutto bene.
‫E ora recuperiamo semplicemente tutte le recensioni utilizzando attendono, quindi
‫solo una semplice ricerca senza alcun filtro.
‫Uno stato di 200 e quindi rispedito al normale JSON.
‫Stato come successo.
‫Definiamo anche la proprietà
‫del risultato con la lunghezza del punto delle
‫recensioni e, naturalmente, i dati stessi.
‫Dagli un salvataggio qui e ora sul prossimo.
‫Quindi crea Recensione.
‫Tutto bene.
‫E inizi a vedere qui
‫che in realtà stiamo costruendo un sacco di codice duplicato.
‫Quindi tutto questo qui sembra fondamentalmente
‫esattamente lo stesso che sembra per gli utenti e
‫per i tour.
‫Destra?
‫E in realtà lo risolveremo
‫un po' più avanti nella sezione.
‫Ma per ora, voglio solo che funzioni.
‫Bene?
‫Quindi per ora non preoccuparti di scrivere tutto
‫questo codice dall'aspetto duplicato.
‫Bene.
‫Quindi chiamiamo questo qui nuovo Review,
‫e poi come sempre usiamo dot create con tutti i dati
‫che arrivano dal corpo.
‫Bene?
‫E così, ancora una volta, se ci sono campi
‫nel corpo che non
‫sono nello schema di revisione, verranno semplicemente ignorati.
‫Ed ecco perché è
‫sicuro farlo semplicemente in questo modo
‫quando si crea una nuova risorsa.
‫Tutto ok?
‫Comunque, ora rispediamolo al cliente come sempre.
‫Quindi, con uno stato di 201
‫per creato, e la revisione dovrebbe essere la
‫nuova revisione.
‫Tutto bene.
‫In realtà senza i due punti lì, il punto e virgola, e quindi sì.
‫Questi sono tutti controller.
‫Passiamo ora al percorso.
‫Quindi
‫rivedi Routes dot js.
‫E qui
‫ovviamente iniziamo richiedendo il nostro controller,
‫e ai controller e
‫rivedere Controller dot js.
‫Successivamente, dobbiamo creare il nostro router.
‫Quindi express, e quindi ovviamente dobbiamo anche
‫importare express qui.
‫Quindi facciamolo prima di fare qualsiasi altra cosa.
‫Esprimere.
‫Quindi dot Router, e penso che funzioni così.
‫E ora
‫router e definisci il nostro
‫percorso e questo è di nuovo fondamentalmente il percorso delle recensioni.
‫Bene.
‫Perché ricorda come nel
‫passaggio successivo monteremo
‫effettivamente questo router su recensioni slash API.
‫Bene?
‫Proprio come abbiamo fatto con i tour e gli utenti.
‫E in realtà facciamolo prima di fare qualsiasi altra cosa.
‫Bene?
‫Quindi, solo per eliminare quella
‫confusione che potresti avere.
‫Quindi, esportiamo il router da qui.
‫Bene?
‫E così ora possiamo passare
‫all'app dot js.
‫E poi ovviamente importa qui il nostro router.
‫E
‫richiedere, rivedere i percorsi.
‫Bene?
‫E così ora veniamo quaggiù
‫e montiamo questo router su un nuovo percorso.
‫E quel percorso sarà come
‫ho detto API slash V1 slash
‫recensioni.
‫Bene.
‫E quindi di nuovo
‫questo router che stiamo specificando ora è fondamentalmente
‫un middleware che montiamo su questo percorso.
‫Bene?
‫Quindi, ogni volta che c'è
‫una richiesta con un URL che inizia in questo
‫modo, in pratica verrà chiamata questa
‫funzione middleware qui.
‫E quindi questo è
‫il nostro router e lì dentro
‫solo il percorso slash, quindi solo la
‫radice in pratica sarà quindi questa recensione API V1.
‫Bene?
‫Quindi, proprio come abbiamo fatto prima delle altre due risorse.
‫Quindi tour Model, non è lì che stavamo lavorando.
‫Stavamo lavorando nella recensione Percorsi.
‫Bene.
‫Quindi abbiamo specificato un percorso.
‫Specifichiamo ora il metodo per il
‫quale specifichiamo la nostra funzione.
‫Quindi abbiamo ottenuto, e per questo
‫abbiamo usato o
‫effettivamente riscritto il controller di revisione dot get All Reviews
‫Giusto?
‫E poi abbiamo anche un post
‫per creare una recensione.
‫Bene?
‫Dagli un salvataggio.
‫E in realtà vogliamo che solo gli
‫utenti autenticati possano pubblicare recensioni.
‫E anche solo utenti che in realtà sono utenti regolari.
‫Quindi non amministratori e nemmeno guide turistiche.
‫Bene?
‫Quindi come possiamo implementarlo?
‫Ricordiamo la nostra sezione di autenticazione.
‫Quindi iniziamo richiedendo il nostro controller di autenticazione.
‫Quindi, di nuovo, controller e controller di autenticazione.
‫E ora tutto ciò
‫che dobbiamo fare è utilizzare effettivamente le
‫funzioni middleware che abbiamo specificato lì.
‫Ricorda.
‫Quindi, per prima cosa, usiamo il middleware di protezione, quindi auth
‫Controller dot protection e
‫questo farà
‫in modo che proteggiamo questo percorso in
‫modo che sia accessibile solo agli utenti autenticati.
‫Destra?
‫E poi nel
‫passaggio successivo diciamo che vogliamo limitare
‫questo percorso, quindi usiamo il nostro middleware limit
‫To solo agli utenti con il ruolo di utente.
‫Tutto ok?
‫Quindi, di nuovo, l'abbiamo fatto qui prima un paio di volte.
‫E quindi, niente di nuovo a questo punto.
‫Bene.
‫Quindi penso che abbiamo seguito tutti i passaggi.
‫Quindi, prima di tutto, abbiamo un modello che ci
‫permetterà di creare nuovi documenti.
‫Quindi abbiamo le funzioni del nostro
‫controller definite nel nostro controller per ottenere tutte le
‫recensioni e creare recensioni.
‫Quindi, abbiamo usato queste funzioni del controller
‫o funzioni
‫del gestore, come puoi
‫anche chiamarle, per creare alcune nuove rotte.
‫Bene?
‫E così abbiamo creato un percorso per ottenere
‫recensioni e per pubblicare recensioni.
‫E proprio come prima,
‫lo abbiamo fatto fondamentalmente in una mini applicazione secondaria
‫che è solo per le recensioni.
‫Ed è per questo che abbiamo
‫creato il nostro nuovo router che poi abbiamo importato
‫nella nostra applicazione principale e montato su questo URL dove
‫vogliamo accedere a tutto ciò che riguarda le recensioni.
‫Tutto ok?
‫Quindi, ora andiamo avanti e proviamo questo.
‫Quindi vado avanti, copio
‫questo e creo una nuova scheda qui
‫e
‫quindi qui ci
‫sono recensioni e ovviamente post.
‫Tutto bene.
‫Quindi, cosa dobbiamo effettivamente specificare per
‫pubblicare una nuova recensione?
‫Quindi abbiamo bisogno della recensione stessa.
‫Ricorda.
‫Quindi diciamo "tour fantastico",
‫poi la valutazione
‫e gli darò cinque qui,
‫e poi il tour e l'ID utente.
‫Bene?
‫E quindi ora dobbiamo ottenere l'ID di uno dei tour.
‫Bene?
‫E quindi usiamo il primo vero
‫tour qui diciamo, quindi usiamo questo esploratore del mare.
‫Tutto ok?
‫Quindi,
‫l'ID dell'esploratore del mare
‫e ora ovviamente abbiamo
‫anche bisogno dell'ID dell'utente che pubblica la recensione.
‫E possiamo ottenerlo
‫qui da ottenere tutti gli utenti.
‫E quindi in realtà abbiamo solo un utente
‫che è un utente normale.
‫Quindi questo Jonas qui e quindi prendiamo questo ID.
‫Tutto ok?
‫Ora tieni presente che
‫questo utente deve effettivamente essere loggato.
‫Bene?
‫E così un po' più
‫tardi otterremo automaticamente l'ID utente dall'utente che ha
‫già effettuato l'accesso.
‫Ricorda che possiamo farlo perché il middleware di
‫protezione metterà l'utente sull'oggetto della richiesta.
‫Ricordati che?
‫Ma per ora, volevo mantenerlo semplice qui,
‫quindi con l'attuale
‫implementazione abbiamo effettivamente bisogno di fornire anche l'ID dell'utente.
‫Bene?
‫Ma dobbiamo comunque accedere come utente normale
‫perché abbiamo protetto questo percorso.
‫Ricordati che?
‫Quindi chiudiamo un paio di questi.
‫Bene?
‫E accedi qui.
‫E lo facciamo come, quindi ciao punto Jonas a IO
‫così ciao.
‫E la sua password è probabilmente e spero che
‫sia sempre la stessa.
‫E in realtà non è così, proviamo una nuova password perché
‫ricordo di aver usato quella quando abbiamo cambiato le password.
‫Non funziona ancora, quindi creiamo effettivamente
‫un nuovo utente.
‫Bene?
‫Ovviamente a questo punto potremmo fare la reimpostazione della password, ma è
‫un po' troppo lavoro
‫e quindi creerò semplicemente un nuovo utente in
‫modo che sia più facile solo per testarlo ora.
‫Bene?
‫Quindi usiamo test su Jonas dot IO e
‫il nome qui sarà test user.
‫Tutto bene.
‫Oh, e abbiamo già quell'indirizzo email nel nostro database ed
‫è strano.
‫Abbiamo utente.
‫Forse no, non l'abbiamo aggiornato correttamente.
‫Oh, ma forse è un utente cancellato.
‫Quindi un utente che non è più attivo
‫e quindi non viene visualizzato qui.
‫Quindi diamo un'occhiata a questo in bussola.
‫E ovviamente quando sei in
‫modalità sviluppo, ti imbatterai in questo tipo di problemi tutto il tempo.
‫Quindi qui, prova Jonas e, come stavo dicendo, in
‫realtà è uno di questi utenti eliminati.
‫Quindi attivo impostato su falso.
‫Quindi proviamo di nuovo.
‫Quindi prova anche qui semplicemente l'utente.
‫Quindi invialo ora e ora siamo registrati.
‫E così ora sto copiando l'ID di questo nuovo utente per
‫creare questa nuova recensione.
‫Tutto ok?
‫Inviamolo ora e,
‫naturalmente, riceviamo l'errore di non aver effettuato l'accesso perché
‫in realtà non abbiamo
‫fornito il nostro token Web JSON.
‫Quindi dobbiamo arrivare all'autorizzazione quindi al token
‫al portatore, e poi
‫ovviamente a questo.
‫Quindi, se proviamo di nuovo
‫ora, allora ci siamo.
‫Bene.
‫Creiamone un altro per un altro
‫tour, questa volta per,
‫per
‫il prossimo, quindi per Forrest Hiker.
‫Quindi copia anche qui l'ID.
‫Sì.
‫Qui l'utente sarà lo stesso, ma un altro tour.
‫Diamo un quattro stelle.
‫E diciamo solo "mi è piaciuto molto. "Qualcosa di molto
‫semplice e
‫ok.
‫Salva questo e creerò
‫una nuova cartella qui per
‫le recensioni e ovviamente qualcosa
‫è
‫andato storto qui.
‫Allora dov'è quella cartella?
‫Mm.
‫Non è davvero da nessuna parte, quindi creiamolo qui.
‫E possiamo anche cambiare il nome qui sopra.
‫Quindi crea
‫una nuova recensione.
‫Bene.
‫E ora vogliamo anche ottenere tutte le recensioni.
‫Quindi non abbiamo più bisogno di questi due.
‫Ok, questo è davvero un
‫GET, e salviamolo anche in Recensioni.
‫Ottieni tutte le recensioni.
‫E quindi dovrebbe essere sufficiente per iniziare e
‫vedere davvero tutte le nostre recensioni.
‫Ok, e ci siamo.
‫Diamo un'occhiata alla bussola e per vedere
‫le recensioni qui dobbiamo andare avanti
‫e ricaricare l'intero database,
‫ma ora quando arriviamo a Recensioni qui vediamo davvero
‫anche le nostre due recensioni che sono state create.
‫Bene.
‫Ora, come facciamo in
‫modo da vedere effettivamente l'utente e i dati del
‫tour qui invece che semplicemente gli ID?
‫Beh, ovviamente dobbiamo usare di nuovo popola.
‫Destra?
‫Ed è proprio quello che faremo
‫nel prossimo video.