‫Insegnante: Ora iniziamo a creare
‫documenti, testare il modello e iniziare a usare davvero Mongoose.
‫E sono davvero entusiasta di
‫questo video, quindi iniziamo davvero da qui.
‫Quindi quello che faremo è creare una nuova
‫variabile, e la chiamerò testTour, e
‫questo sarà un nuovo
‫documento creato dal modello del tour
‫che abbiamo creato nell'ultima lezione.
‫Quindi
‫quello che faremo è dire nuovo Tour e
‫poi passare un oggetto con i dati.
‫Quindi il nome, diciamo, di
‫nuovo, "The Forest Hiker", proprio come
‫abbiamo usato prima, quindi la valutazione, diciamo
‫4. 7,
‫e poi
‫il prezzo, diciamo 497, ok?
‫Quindi, questo è, ancora una volta, un nuovo documento
‫che abbiamo creato da un modello di
‫tour, o costruttori di funzioni,
‫e come ho detto prima, questo
‫è un po' l'uso di costruttori di
‫funzioni JavaScript, o classi JavaScript se stai usando ES6, fondamentalmente
‫per creare nuovi oggetti da
‫una classe, giusto, e quindi
‫questa è esattamente la stessa sintassi, in realtà,
‫quindi usiamo la
‫parola chiave name e poi il
‫nome della classe in ES6, proprio così, va bene?
‫Ora qui, non è esattamente la stessa
‫cosa, ma questa analogia
‫è utile per capire come funziona.
‫Quindi questo documento del tour di prova che abbiamo appena
‫creato è un'istanza del modello del tour, e quindi
‫ora ha un paio di metodi su di
‫esso che possiamo
‫usare per interagire con il database.
‫Quindi lascia che te lo mostri.
‫Quindi ora possiamo dire testTour. save, e questo lo
‫salverà nella
‫raccolta dei tour nel database, ok, ed
‫è davvero così semplice.
‫Quindi, di nuovo, abbiamo la nostra istanza
‫del documento che è testTour,
‫e lì possiamo quindi chiamare il
‫metodo save per salvare il documento nel database.
‫Ora questo salvataggio qui restituirà
‫quindi una promessa che possiamo quindi consumare.
‫Quindi per ora, usiamo allora per quello, e
‫in futuro, useremo effettivamente async
‫wait per consumare queste promesse, ma per ora, manteniamolo
‫semplice e non
‫creiamo altre funzioni, e quindi
‫invece, siamo semplicemente usando
‫il metodo then qui.
‫Quindi qui abbiamo accesso al documento che
‫è stato appena salvato nel database.
‫Quindi, fondamentalmente, il valore del risultato della
‫promessa che il metodo save
‫restituisce è il documento finale così com'è nel database.
‫E quindi ora andiamo
‫avanti e registriamo il documento sulla console, ok?
‫Ora, d'altra parte, anche il
‫salvataggio di questo documento nel database
‫potrebbe andare storto, quindi prendiamo quell'errore, ok?
‫Quindi, proprio come prima, abbiamo utilizzato il
‫metodo catch per rilevare eventuali errori potenziali, quindi se si
‫verifica un errore durante il salvataggio del
‫documento nel database, saremo in grado
‫di rilevare l'errore qui in
‫questo metodo.
‫Ok, quindi in pratica, qui in questa funzione che
‫sto passando a catch.
‫Ok, per ora, tutto ciò che voglio fare, in realtà,
‫è collegarlo anche alla console.
‫Diciamo, "Errore", aggiungi alcuni emoji qui
‫per renderlo più visibile
‫nella console, quindi possiamo passare
‫un secondo argomento nel registro della
‫console, che sarà quindi l'errore, ok?
‫Siete pronti?
‫Quindi, salviamolo ora,
‫e questo eseguirà il codice che è
‫qui, quindi in pratica creiamo questo nuovo tour
‫e proviamo a salvarlo subito nel database, ok?
‫Quindi, diamo un
‫salvataggio ora e vediamo cosa succede nella
‫console, e infatti, ci siamo.
‫Quindi vedi che questo è il
‫documento che è stato appena salvato nel nostro database, ok?
‫Quindi qui in realtà vediamo anche
‫l'ID, e questo è semplicemente generato automaticamente da
‫MongoDB, ed è semplicemente l'identificatore univoco per il documento.
‫Quindi, proprio come è successo prima nella sezione
‫MongoDB, otteniamo automaticamente questo identificatore univoco per
‫il nuovo oggetto.
‫Quindi anche Mongoose aggiunge automaticamente questa
‫V e la imposta a zero qui, ma
‫non è molto importante a questo punto, ok?
‫Ciò che conta qui è
‫che il nostro nuovo documento è stato effettivamente aggiunto
‫con successo al database e, solo per
‫essere sicuri, passiamo effettivamente a Compass e diamo un'occhiata al nostro database lì.
‫Quindi qui abbiamo la raccolta dei
‫tour e poi abbiamo il documento che abbiamo appena creato.
‫Quindi ha lo stesso identico ID, e ovviamente tutti gli
‫altri dati che abbiamo inserito lì, e quindi
‫in effetti, questo è l'oggetto che
‫abbiamo appena creato.
‫E tieni presente che avevamo effettivamente cancellato
‫la raccolta dei tour qui
‫in uno dei video precedenti, giusto,
‫ma Mongoose ha creato automaticamente questa
‫nuova raccolta qui non appena abbiamo
‫creato il primo documento utilizzando
‫il modello del tour, e
‫quindi questo nome
‫qui in pratica viene da quel modello di
‫tour, ci dà semplicemente questo nome plurale, proprio come avevamo prima.
‫Perfetto, abbiamo appena fatto interagire la nostra applicazione
‫express con un database MongoDB per
‫la prima volta,
‫e questo è davvero sorprendente, se me lo chiedi.
‫Quindi questo significa che
‫in questo momento siamo in grado di creare documenti direttamente dal nostro codice.
‫Quindi, questo mi rende davvero felice, quindi proviamo
‫di nuovo con un
‫altro, va bene, ma in realtà
‫prima di farlo, voglio
‫solo ricaricare questo file qui che proverà
‫a salvare di nuovo questo documento qui nel
‫database , giusto, semplicemente perché tutto
‫questo codice qui
‫viene eseguito ogni volta che salviamo il file.
‫Ora, proviamo a indovinare cosa succederà non
‫appena salvo questo file.
‫Puoi indovinare?
‫Aspettiamo, e
‫in effetti otteniamo qualcosa di
‫diverso ora, otteniamo un
‫errore qui e l'errore che
‫vediamo è questa raccolta di errori
‫di chiave duplicata, che qui sotto dice questa chiave duplicata, ok?
‫Quindi abbiamo già un tour con
‫il nome di "Forest Hiker", e
‫quindi ora stavamo cercando di crearne
‫un altro, e poiché nel nostro
‫schema abbiamo questa proprietà unica qui, non è
‫consentito, lo ricordi?
‫Quindi abbiamo impostato
‫questo univoco qui su vero per rendere
‫impossibile avere due tour con lo stesso
‫nome, e quindi abbiamo appena dimostrato che funziona davvero.
‫Va bene, sostituiamo semplicemente il codice che
‫abbiamo qui per
‫creare un nuovo tour con un altro nome.
‫Chiamiamolo "The Park Camper", e andiamo
‫avanti e rimuoviamo il prezzo e anche
‫il rating.
‫Allora, puoi indovinare cosa succederà adesso?
‫In realtà chiariamo, o in realtà
‫lo ha già caricato perché
‫non appena ho fatto clic qui, ha salvato
‫il file e quindi, sì, abbiamo appena ricevuto un altro
‫errore, quindi puoi vederlo qui,
‫il che significa che non abbiamo
‫salvato con successo questo documento nel database,
‫e quello che abbiamo qui ora è un errore
‫di convalida proveniente dal
‫campo del prezzo che dice "Un tour deve
‫avere un prezzo", e quindi
‫questo è esattamente il messaggio che abbiamo specificato qui, giusto?
‫Semplicemente perché in questa riga abbiamo
‫detto che il prezzo è un campo obbligatorio, va
‫bene, e quindi questo
‫richiesto, come ho detto, è un validatore, e
‫quindi quaggiù, otteniamo quindi un errore di validazione.
‫Quindi ora
‫aggiustiamolo e specifichiamo il prezzo, diciamo 997, e diamogli
‫un altro salvataggio.
‫Ora, questa volta, dovrebbe funzionare
‫perché la valutazione non è richiesta, e
‫quindi quando veniamo
‫quaggiù, il nostro documento è
‫stato effettivamente salvato con successo nel database, vedete?
‫Ora, non abbiamo specificato la valutazione qui in questo tour di
‫prova, ma vedete che è ancora 4. 5, e questo perché
‫impostiamo il valore predefinito
‫su 4. 5 quassù.
‫Quindi volevo
‫solo mostrartelo qui in questo rapido esempio.
‫Ok, quindi abbiamo avuto successo di nuovo, quindi
‫torniamo qui, ricarichiamo, stai facendo clic
‫su questo pulsante e in effetti ora
‫abbiamo i nostri due tour.
‫Fantastico, e ricordo quanto sia stato fantastico per me
‫quando ha funzionato la prima volta quando
‫stavo iniziando a imparare Express e Mongo, e
‫come creare queste applicazioni, quindi
‫spero davvero che tu ti senta
‫allo stesso modo in questo
‫momento, poiché hai appena creato i
‫tuoi primissimi documenti utilizzando Express
‫e, naturalmente, MongoDB.