‫Istruttore: Quindi nell'ultima lezione abbiamo
‫appreso degli schemi e dei modelli di Mongoose,
‫quindi ora implementiamo uno schema e
‫un modello molto semplici per la nostra applicazione.
‫E per ora, facciamolo proprio qui
‫nel nostro server. js file.
‫Più tardi, ovviamente,
‫lo sposteremo in un altro file.
‫Quindi, Mongoose è tutto incentrato sui modelli e
‫un modello è come un
‫progetto che usiamo per creare documenti.
‫Quindi è un po' come le classi
‫in JavaScript, che usiamo anche
‫come progetti per creare oggetti da esse, giusto?
‫Quindi, di nuovo, creiamo un modello in Mongoose
‫per creare documenti che lo utilizzano
‫e anche per interrogare l'aggiornamento e l'eliminazione di questi documenti.
‫Quindi, in pratica, per eseguire ciascuna delle operazioni CRUD,
‫quindi creare, leggere, aggiornare ed eliminare,
‫abbiamo bisogno di un modello Mongoose e, per creare
‫un modello, abbiamo effettivamente bisogno di uno schema.
‫Quindi, in realtà creiamo modelli dallo
‫schema Mongoose proprio come abbiamo
‫appreso nell'ultimo video e usiamo lo schema per
‫descrivere i nostri dati, per impostare i valori predefiniti, per
‫convalidare i dati e tutti i tipi di cose del genere.
‫Quindi, proprio come vedrai
‫adesso, perché ora inizieremo a creare
‫uno schema molto semplice per i nostri tour.
‫Quindi, diciamo che tourSchema è una
‫nuova mangusta. Schema.
‫Aggiungi che qui passiamo effettivamente il nostro schema come oggetto.
‫Va bene, possiamo anche passare alcune opzioni allo schema, ma
‫lo lascio a un video futuro in cui
‫abbiamo effettivamente bisogno di quella funzione.
‫Quindi, ricordi i documenti del tour che
‫abbiamo creato nell'ultima sezione quando
‫abbiamo iniziato a esplorare Mongoose DB?
‫Quindi abbiamo sempre
‫dato loro un nome, una valutazione
‫e un prezzo, giusto, quindi
‫ora replichiamo questo qui dicendo nome, e poi
‫descrivendo che tipo di dati vogliamo dopo
‫il nome, e vogliamo che sia una stringa.
‫Quindi Mongoose utilizza effettivamente i
‫tipi di dati JavaScript nativi, e quindi qui possiamo
‫dire stringa, o dopo la valutazione possiamo dire che vogliamo
‫un numero e lo stesso del prezzo.
‫Dovrebbe essere anche un numero, no?
‫Quindi questo è il modo più elementare di descrivere i nostri dati.
‫Quindi abbiamo un nome, una valutazione e un prezzo
‫e abbiamo specificato il tipo
‫di dati che ci aspettiamo per ciascuno di questi campi.
‫Quindi, di nuovo, questo è
‫il modo più elementare di descrivere uno schema, ma
‫possiamo fare un ulteriore passo avanti definendo qualcosa
‫chiamato opzioni del tipo di schema per ogni
‫campo, o solo per un campo specifico.
‫Quindi iniziamo qui con il
‫nome, e invece
‫di specificarlo semplicemente come una stringa, passiamo effettivamente un altro oggetto.
‫E quindi ora diciamo che vogliamo che il tipo
‫sia stringa, ma ora
‫possiamo definire un paio di opzioni in più, ok?
‫Ad esempio, possiamo dire che questo campo è obbligatorio, quindi
‫impostiamo
‫semplicemente la proprietà richiesta qui su true, ok?
‫Quindi, di nuovo, questo oggetto qui sono le opzioni del tipo di schema
‫e possono essere diverse per tipi diversi, ad
‫esempio il tipo di numero ha
‫alcune opzioni di schema diverse rispetto alla stringa
‫qui, ma molte di esse sono anche simili.
‫Quindi, ad esempio, il richiesto,
‫possiamo usarlo anche sul numero, e quindi facciamolo qui.
‫Quindi il tipo, vogliamo ancora che
‫sia un numero, e vogliamo anche che sia obbligatorio, ok?
‫Ora, qui nella richiesta possiamo
‫effettivamente specificare l'errore che vogliamo che venga visualizzato
‫quando manca questo campo.
‫Quindi, per farlo, dobbiamo
‫solo passare in un array e il primo è vero.
‫Quindi il primo elemento è vero e il
‫secondo è la stringa di errore.
‫Diciamo che un tour deve avere un nome, e poi qui
‫facciamo lo stesso.
‫Il tour deve avere un prezzo, ok?
‫Quindi possiamo anche impostare i
‫valori predefiniti e facciamolo qui per la valutazione.
‫Quindi, di nuovo, specificherò
‫alcune opzioni del tipo di schema qui, che non
‫è obbligatorio, quindi è sufficiente definire
‫semplicemente il tipo qui come abbiamo fatto
‫noi, ma se vuoi altre funzionalità,
‫allora dobbiamo almeno specificare lo schema oggetto opzioni tipo.
‫Ok, quindi dobbiamo specificare di nuovo il tipo, che è numero, e come
‫impostazione predefinita voglio che sia 4. 5.
‫Quindi, se ora creiamo un nuovo documento
‫del tour utilizzando questo schema e non specificando la
‫valutazione, verrà automaticamente impostato su 4. 5, va bene?
‫E per finire, proviamone un altro qui, vale a
‫dire che il nome dovrebbe essere univoco.
‫Quindi, univoco e impostalo su vero, e così in
‫questo modo, ora possiamo avere
‫due documenti del tour con lo stesso nome, va bene?
‫Quindi, questo è il nostro schema
‫di base, ora andiamo
‫avanti e creiamo un modello da esso, ok?
‫Ed è
‫molto semplice, creiamo semplicemente una variabile chiamata
‫Tour e poi mangusta. model, poi il nome del
‫modello, che è Tour con una T maiuscola qui,
‫va bene.
‫E quindi questa è solo una
‫specie di convenzione nella programmazione per usare sempre le
‫maiuscole sui nomi dei modelli e sulle variabili.
‫Quindi qui è lo stesso, quindi ho anche
‫creato questa variabile di tour qui con una T maiuscola solo così
‫sappiamo che abbiamo a che fare con un modello qui.
‫Va bene, quindi il
‫nome del modello e poi lo schema, e questo è tutto.
‫Quindi, proprio così, abbiamo creato
‫un tour dallo schema che abbiamo creato qui all'inizio.
‫Bene, quindi nel prossimo
‫video useremo questo modello qui
‫per creare il nostro primissimo documento del tour, va bene?
‫Quindi, solo un riassunto qui, abbiamo usato una nuova mangusta. Schema qui per
‫specificare uno schema per i nostri dati.
‫Quindi, sostanzialmente descrivendolo e facendo anche qualche convalida.
‫Ad esempio, questo è richiesto
‫qui, questo è in realtà qualcosa chiamato validatore perché
‫viene utilizzato per convalidare i nostri dati.
‫In questo caso, semplicemente per convalidare se
‫il nome è effettivamente presente.
‫E ci sono molti validatori in Mongoose,
‫e possiamo anche crearne uno nostro, quindi
‫ovviamente ne parleremo un po' più
‫tardi, di nuovo, una volta che avremo davvero bisogno di queste funzionalità.
‫Ad ogni modo, ora passiamo velocemente per
‫iniziare finalmente a utilizzare il modello
‫che abbiamo appena creato.