‫Istruttore: Popoliamo ora le recensioni sia
‫con l'utente che con i dati del tour.
‫Quindi, proprio come nel tour, ora facciamo
‫in modo che sia il tour che l'utente vengano
‫automaticamente popolati ogni volta che c'è una query per una recensione.
‫Dato che lo abbiamo già fatto
‫prima, ora ti darò un'altra sfida, ok.
‫Quindi voglio che tu vada avanti
‫e lo faccia proprio come abbiamo fatto nei tour, ma ora passiamo alle recensioni.
‫Solo un suggerimento che
‫devo darti prima che tu possa farlo
‫da solo, è che quando vuoi popolare
‫due campi, devi effettivamente chiamare popola due volte.
‫Quindi una volta per ciascuno dei campi, va bene.
‫Con queste informazioni, dovresti essere a posto
‫per mettere in pausa il video ora e andare a provarlo.
‫Quindi spero che non sia stato troppo difficile.
‫Andiamo avanti e chiudiamo solo alcuni file qui, quindi
‫tutto ciò che non è correlato alle recensioni, non
‫ci serve più.
‫Quindi andiamo al modello di revisione e poi
‫implementiamo o pre-trova il middleware.
‫Quindi lo facciamo sullo schema, come
‫già sai, e poi di nuovo usiamo un'espressione regolare
‫per abbinare sostanzialmente le stringhe, che iniziano con find.
‫Quindi, di nuovo, funzionerà per trovare, per trovarne
‫uno e tutti gli altri per trovare uno dei metodi
‫disponibili in Mongoose.
‫Come sempre, comincio scrivendo dopo.
‫E ora tutto ciò che dobbiamo
‫fare è chiamare popolate sulla query corrente, quindi questo. popolare, e ora specificherò
‫effettivamente l'oggetto options perché voglio solo selezionare
‫un paio di campi e non l'intero
‫tour, e anche non l'intero utente.
‫Quindi ricorda, iniziamo con la proprietà del percorso e
‫questa sarà per il tour.
‫Quindi, di nuovo, specificando tour qui, significa che questo campo qui,
‫che ha l'esatto nome, sarà quello
‫che verrà popolato in base a un
‫modello di tour.
‫Bene, perché è quello che abbiamo specificato qui, ok.
‫Quindi il riferimento è a un modello
‫chiamato tour, e fondamentalmente è in quella raccolta
‫in cui Mongoose cercherà i documenti con l'ID che abbiamo specificato.
‫Va bene, quindi vogliamo un tour, ma poi diciamo che in
‫realtà vogliamo solo il nome del
‫tour e nient'altro.
‫Quindi seleziona, ok, e poi solo il nome, e poi come ho
‫detto, se vogliamo popolare più campi, tutto ciò che
‫dobbiamo fare è chiamare di nuovo popola.
‫Quindi a questo punto la query viene popolata con i tour e
‫ora dobbiamo compilarla di nuovo,
‫questa volta con l'utente.
‫E ora seleziona, e
‫in realtà mostra solo il nome utente e la foto e
‫non, ad esempio, cose come l'e-mail.
‫Quindi diciamo che
‫qualcuno colpisce l'API per ottenere tutte
‫le recensioni, ma poi non vogliamo far trapelare
‫tutti i dettagli sugli utenti che pubblicano queste recensioni al cliente.
‫Quindi nessuno dovrebbe davvero essere in grado di
‫conoscere i dati privati sui revisori, come le e-mail, ok.
‫Quindi, di nuovo, trapeliamo solo, inviamo solo dati rilevanti sull'utente e,
‫in questo caso, sono il nome e la foto, ok.
‫Quindi salva questo e se ora raggiungiamo o otteniamo
‫tutti gli endpoint delle recensioni, allora
‫già il tour e l'utente dovrebbero essere popolati invece di
‫vedere solo gli ID lì.
‫Proviamolo, e ci siamo.
‫Quindi funziona, otteniamo il nome,
‫e ovviamente anche l'ID, e poi lo stesso per l'utente.
‫Quindi otteniamo il nome, ma poi non la foto.
‫Quindi vediamo, forse non ho capito, specificare la proprietà
‫della foto, quindi diamo un'occhiata a questo.
‫Quindi userModel, ma in realtà è lì.
‫No, mi dispiace, ovviamente non vediamo la foto perché non abbiamo
‫mai specificato nessuna foto per nessuno dei nostri utenti.
‫Ok, quindi l'unica proprietà che esiste effettivamente è
‫il nome, quindi è quello che otteniamo.
‫Ok, e in effetti è così.
‫È davvero semplice, è tutto ciò che dobbiamo fare
‫per ottenere tutti i
‫dati correlati, proprio come abbiamo specificato nel nostro modello di dati.
‫Ora di nuovo,
‫tieni presente che questa aggiungerà alcune query
‫extra, e in questo caso, in
‫realtà sono due query, perché
‫dietro le quinte, Mongoose dovrà effettivamente interrogare sia i tour
‫che gli utenti per trovare il documento corrispondente, ok.
‫Quindi questo dovrebbe
‫probabilmente aggiungere un po' di tempo qui alla query.
‫Quindi ci sono voluti 266 millisecondi, così.
‫Facciamo solo, per motivi di esperimento, commentiamo
‫questo codice e poi riproviamo.
‫E questo richiede molto tempo, non sono sicuro del perché.
‫Quindi facciamolo di nuovo, e quindi vedete, 157 millisecondi, e
‫se lo rimettiamo a posto, lo facciamo di nuovo.
‫E ancora, ci vuole un sacco
‫di tempo, e così di nuovo, lo sto facendo due volte.
‫Ma vedi comunque che ci è voluto un po' di più, ok.
‫Quindi non è la
‫fine del mondo, erano solo come 100 millisecondi in
‫più, ma quando raggiungi una certa
‫scala, questo potrebbe fare la differenza.
‫Quindi, di nuovo, voglio solo che lo tenga a mente.
‫Ad ogni modo, per questa lezione è tutto, quindi ora andiamo avanti.