‫Istruttore: In questo video, continuiamo a
‫tradurre il modello di dati che abbiamo stabilito all'inizio
‫della sezione in un codice vero e proprio.
‫E quindi, questa volta implementeremo il modello delle recensioni.
‫Quindi il primo passo è creare un nuovo file nella
‫cartella dei modelli e chiamarlo ReviewModel. js.
‫E per me, questa sembra un'altra grande sfida per te per mettere
‫in pratica alcune delle abilità che
‫hai già imparato fino a questo punto.
‫Ok, quindi, in questa sfida, voglio che tu crei
‫il modello di revisione.
‫E quello di cui abbiamo bisogno lì dentro è in realtà molto semplice.
‫Quindi permettetemi di metterlo qui in un commento.
‫Quindi fondamentalmente vogliamo una recensione,
‫quindi il testo per la recensione.
‫Vogliamo una valutazione
‫così proprio come questa.
‫Quindi vogliamo anche un createdAt così con
‫il timestamp corrente e
‫quindi vogliamo anche un riferimento al tour a cui appartiene
‫questa recensione e
‫anche all'utente che ha scritto questa recensione.
‫Ok, quindi fondamentalmente due riferimenti ai genitori qui, giusto.
‫Quindi, con le cose che hai imparato
‫nelle ultime due lezioni,
‫dovresti essere in grado di completare questa sfida
‫completamente da solo.
‫Quindi, metti in pausa il video ora e buona fortuna.
‫Ora, ok, quindi spero che tu
‫non l'abbia semplicemente saltato e invece l'hai implementato davvero da
‫solo e comunque, è così che l'ho creato.
‫Quindi, ovviamente, dobbiamo iniziare richiedendo la mangusta e quindi lo
‫schema di
‫revisione è uguale alla nuova mangusta. Schema.
‫E quindi iniziamo ad aggiungere i nostri campi.
‫Quindi prima la recensione è ovviamente una stringa.
‫Ora, giusto e ovviamente, lo sto facendo
‫troppo velocemente, quindi devo anche specificare il
‫tipo e poi impostiamolo anche
‫su
‫una recensione richiesta, vera, non può essere vuota.
‫Quindi vogliamo una valutazione
‫e questa è del tipo numero.
‫E il punteggio è idealmente compreso tra uno e cinque.
‫E quindi il minimo di uno e il massimo è di cinque.
‫Quindi, come
‫già sai, questi sono alcuni semplici validatori.
‫Funziona solo per i numeri, giusto.
‫Questo non è corretto qui.
‫Bene.
‫Successivamente, il creatoAt.
‫In questo è di tipo,
‫data e per impostazione predefinita vogliamo
‫Data. Ora.
‫Bene.
‫Quindi questa era la parte facile.
‫E in realtà creiamo anche un
‫modello ed esportiamolo prima di aggiungere questi riferimenti.
‫Quindi const, Review è
‫uguale a mangusta. modello con il
‫nome Review.
‫E poi, naturalmente, rivedereSchema.
‫Per finire il modulo del corso. export
‫è uguale a Review.
‫Va bene, e ora arriva la parte di riferimento.
‫Quindi una recensione ovviamente deve appartenere a un tour.
‫E ha anche bisogno di un autore.
‫Bene.
‫Quindi questo è di nuovo ciò che
‫abbiamo specificato nella nostra lezione sulla modellazione dei dati.
‫Quindi, in pratica, in
‫questo caso avremmo implementato la referenziazione dei genitori.
‫Perché sia il tour che l'utente sono in un certo
‫senso i genitori di questo set di dati.
‫E abbiamo deciso di farlo
‫in questo modo
‫perché cancelleremo potenzialmente enormemente qualsiasi elemento genitore, giusto?
‫Quindi non dovremmo progettare la nostra
‫applicazione pensando che ci saranno solo poche recensioni.
‫Solo per poi tornarci dopo un po' di tempo
‫e scoprire che le nostre supposizioni erano sbagliate.
‫E ora dobbiamo ricostruire il nostro intero modello di dati.
‫Quindi sarebbe terribile.
‫Quindi in molte situazioni, come già sai
‫quello che non sappiamo davvero, quanto crescerà la nostra cancellazione.
‫Quindi è solo meglio optare per il riferimento dei genitori.
‫Quindi, di nuovo, è esattamente quello che stiamo
‫facendo qui quando facciamo riferimento a tour e utenti.
‫Quindi ora andiamo avanti e implementiamolo.
‫E a partire dal tour.
‫Bene.
‫Quindi qui abbiamo bisogno di un po' di spazio, e va bene.
‫Quindi il tipo è come prima, mangusta, e non
‫è corretto.
‫Quindi mangusta. Schema. ObjectId, con la
‫O maiuscola e la I maiuscola, ma non la D.
‫E te lo
‫sto dicendo solo perché una volta ho scritto ID in
‫questo modo, e poi ho passato mezz'ora a cercare
‫di capire perché la mia applicazione non funzionava.
‫Ok, quindi questa D deve essere minuscola.
‫Comunque.
‫Il riferimento in questo caso è ovviamente il tour.
‫E vogliamo anche renderlo obbligatorio.
‫Quindi vero e quindi Review deve appartenere a
‫un tour.
‫Bene.
‫E proprio così, ogni documento Review ora
‫sa esattamente a quale tour appartiene.
‫Mentre il tour ovviamente non sa
‫inizialmente quali Recensioni e quante Recensioni ci sono.
‫Ma che è un problema
‫che in realtà risolveremo un po' più tardi.
‫Bene.
‫Successivamente, quando c'è una recensione, non solo vogliamo
‫sapere a quale tour appartiene, ma anche
‫chi ha scritto questa recensione.
‫Quindi
‫utente, e ancora, lo stesso
‫tipo di mangusta. Schema. ObjectId, e
‫questa
‫volta il riferimento, come puoi immaginare, sarà user.
‫Ok, e di nuovo lo rendiamo
‫obbligatorio perché, in sostanza, una recensione non può
‫funzionare senza un autore.
‫E quindi la
‫recensione deve appartenere a un utente.
‫Ok, è proprio così.
‫Bene.
‫Ora, solo per finire, aggiungiamo anche queste opzioni
‫allo schema in cui facciamo in modo che le proprietà virtuali
‫vengano visualizzate anche negli output di Json e degli oggetti.
‫Bene.
‫Quindi lo abbiamo fatto prima nei tour.
‫Non sono sicuro che l'abbiamo fatto nel modello utente.
‫Ma comunque, qui ne avremo davvero bisogno
‫un po' più tardi.
‫Quindi dobbiamo specificarlo.
‫Ricorda, in pratica intendo
‫questa parte.
‫Quindi in realtà vado avanti e lo copio.
‫Solo per farci risparmiare un po' di tempo.
‫E così di nuovo, tutto ciò che fa è davvero assicurarsi
‫che quando abbiamo una proprietà virtuale,
‫fondamentalmente un campo che non è memorizzato nel
‫database ma calcolato utilizzando un altro valore.
‫Quindi vogliamo che questo venga visualizzato anche ogni volta che c'è un output.
‫Giusto, ed è quello che facciamo qui.
‫Bene.
‫E quindi penso davvero che sia tutto per ora.
‫Molto semplice.
‫L'unica parte un po' complicata è creare
‫questi riferimenti qui.
‫Ma in realtà l'abbiamo
‫fatto prima e quindi funziona esattamente allo stesso modo.
‫Quindi nel prossimo video utilizzeremo
‫lo schema per creare alcune nuove recensioni.
‫Allora ci vediamo.