‫Istruttore: Prendiamoci ora
‫una piccola pausa dalla creazione
‫della nostra API e creiamo un
‫piccolo script divertente che importerà i dati del tour
‫dal nostro file JSON nel database MongoDB.
‫E non ero
‫davvero sicuro se dovessi includere questo video
‫nel corso o se dovessi semplicemente venire con
‫lo script già nei file di avvio del corso.
‫Ma pensavo che fosse un piccolo esercizio carino e
‫quindi l'ho incluso comunque.
‫Quindi, comunque, ora cominciamo.
‫Quindi, in pratica creeremo uno
‫script che caricherà semplicemente i dati dal file
‫JSON come ho appena detto nel database.
‫E questo script è completamente
‫indipendente dal resto della nostra applicazione express.
‫E quindi lo eseguiremo completamente separatamente
‫dalla riga dei commenti solo per importare tutto una volta.
‫Ok, quindi lascia che crei lo
‫script proprio qui nella cartella dei dati.
‫Quindi nuovo file,
‫importazione,
‫dati di sviluppo. js.
‫Tutto bene.
‫Allora, di cosa avremo bisogno per questo?
‫Avremo bisogno della mangusta
‫ovviamente, quindi cominciamo con quello.
‫O in realtà, andiamo avanti nel server. js e copia
‫queste cose
‫perché perché riscriverle di nuovo.
‫Quindi copiamo tutto e poi
‫eliminiamo ciò che non ci serve.
‫Quindi non abbiamo bisogno della nostra applicazione espressa, abbiamo anche
‫bisogno del file . env
‫perché abbiamo bisogno delle nostre
‫variabili d'ambiente per poterci connettere di nuovo al database, ok.
‫E abbiamo bisogno di connetterci di nuovo al
‫database in questo script perché funziona in modo
‫completamente indipendente dall'applicazione express.
‫Verrà eseguito solo una volta all'inizio.
‫Successivamente, abbiamo bisogno dell'accesso al modulo del file system perché
‫ovviamente vogliamo leggere il file JSON.
‫Quindi richiedi fs e
‫infine abbiamo anche bisogno dell'accesso al modello del tour perché
‫il modello
‫del tour è dove vogliamo scrivere i tour, giusto?
‫Quindi, tour uguale e
‫ora troviamo il percorso lì,
‫quindi dal luogo in cui siamo
‫adesso dobbiamo salire di un livello.
‫E cosa sta succedendo qui con queste citazioni?
‫Va bene, quindi sali di
‫livello e siamo nei dati di sviluppo.
‫Quindi abbiamo bisogno di un altro livello in modo
‫da essere nella cartella principale.
‫E da lì passiamo ai modelli e
‫al modello del tour.
‫Va bene e dovrebbe essere tutto per l'installazione.
‫Ora iniziamo leggendo il file.
‫Quindi, leggi il file JSON e dovrebbe
‫essere abbastanza semplice.
‫Quindi i tour sono a fs. readfile e possiamo
‫ovviamente usare la versione sincrona.
‫E diciamo semplicemente che i tour sono semplici. json, ok.
‫E
‫poi, anche la codifica.
‫Quindi, codifica file, utf otto.
‫Dagli un salvataggio.
‫E così ora possiamo scrivere la
‫funzione effettiva che importerà i dati nel database.
‫Quindi importa i dati nel database.
‫Ok, proprio così.
‫E quindi creiamo questa funzione.
‫Importa dati, importa dati,
‫sì.
‫E questa sarà una
‫funzione asincrona che non ha bisogno
‫di argomenti e quindi usiamo di nuovo un blocco try catch qui.
‫E qui lo registrerò semplicemente sulla console se c'è
‫qualche errore,
‫solo per sapere cosa sta succedendo in quel caso.
‫E ora
‫qui, quello che faremo è molto semplice.
‫Stiamo
‫semplicemente aspettando, tour. creare.
‫Quindi abbiamo già usato il tour. creiamo e
‫poi passiamo un oggetto indietro, giusto?
‫Ma il metodo create può anche accettare un array di oggetti.
‫E in
‫tal caso creerà semplicemente un nuovo
‫documento per ciascuno degli oggetti nell'array.
‫Quindi, molto semplice,
‫tutto ciò che dobbiamo fare è specificare qui i dati dei nostri tour, giusto?
‫E in realtà non è corretto al 100%
‫perché ricorda che questo è JSON.
‫E quindi dobbiamo prima convertirlo effettivamente in
‫un oggetto JavaScript usando json. analizzare.
‫Ok, quindi ora abbiamo effettivamente un
‫array di oggetti
‫JavaScript che ora possiamo passare al metodo create, ok.
‫E se ha
‫avuto successo, verrà eseguita la riga
‫successiva e quindi qui possiamo dire che i dati sono stati
‫caricati con successo, va bene.
‫E questo dovrebbe già fare il lavoro.
‫Ora che dire dei dati che sono già nel database?
‫Possiamo anche creare un
‫modo semplice per eliminare praticamente tutti quei dati contemporaneamente.
‫E quindi andiamo semplicemente avanti e facciamo anche questo.
‫Quindi, elimina tutti i dati
‫dalla raccolta, diciamo.
‫E questo strano colore giallo che vedi
‫qui in realtà proviene da un'estensione che ho installato qui.
‫E quindi per sbarazzarmene,
‫scriverò semplicemente di nuovo il database, ok.
‫Quindi elimina i dati
‫e di nuovo questa sarà una funzione asincrona
‫senza argomenti.
‫E fammi effettivamente copiare questo codice qui.
‫Quindi, eliminalo
‫e ora per l'eliminazione stessa
‫possiamo usare la funzione di eliminazione di molti.
‫Ok e in realtà
‫te l'ho mostrato nell'introduzione a MongoDB, giusto?
‫Dove potremmo usare delete many e
‫poi semplicemente non passare nulla lì dentro e
‫questo cancellerebbe
‫quindi tutti i documenti in una certa raccolta, giusto?
‫E quindi la mangusta
‫ha sostanzialmente implementato la stessa funzione qui sul modello, ok.
‫Quindi, in
‫questo caso, il modello del tour ha accesso a
‫questo metodo delete many
‫che farà esattamente lo stesso di delete many in MongoDB nativo, giusto?
‫Quindi, ricorda che la mangusta è
‫solo un, come uno strato di astrazione sopra MongoDB.
‫Ecco perché non usa esattamente le stesse funzioni
‫ma ci dà comunque accesso ad alcune simili o che
‫in realtà hanno lo stesso nome.
‫Quindi delete many ha
‫lo stesso nome della funzione nativa MongoDB, ok?
‫Quindi, di nuovo, ciò che farà è semplicemente
‫andare avanti ed eliminare tutti i documenti nella raccolta dei tour.
‫Quindi, abbiamo le nostre due funzioni
‫qui, ma se ora eseguiamo effettivamente questo
‫file, non accadrà nulla.
‫E questo
‫perché non chiamiamo nessuna di queste funzioni da nessuna parte, giusto?
‫Ora potremmo
‫andare avanti e scrivere semplicemente qualcosa come importare i dati qui e
‫quindi chiamare semplicemente la funzione
‫qui, ma volevo renderlo un po' più divertente.
‫Quindi ora impariamo davvero qualcosa
‫sull'interazione con la riga di comando, ok.
‫E quindi in realtà
‫andrò avanti ed eseguirò questo file senza chiamare nessuna di queste funzioni.
‫Ma invece accederò
‫al processo della console. argv, ok.
‫Solo così possiamo vedere quale processo. argv in realtà è
‫così che possiamo quindi usarlo.
‫Tutto bene.
‫Fammi aprire qui un altro terminale e
‫poi userò node, andrò
‫nei dati dev, poi nei
‫dati
‫e poi lì dentro importerò i dati dev.
‫E qui otteniamo alcuni errori.
‫Vediamo dove.
‫Ah, sì, è per questo, per questo
‫nome di file.
‫Quindi immagino che dovremmo specificare il percorso in pratica.
‫Quindi eseguiamo questo ancora e
‫ancora abbiamo questo errore.
‫E sì, ovviamente ottengo questo errore.
‫È uno stupido.
‫Ricorda come ti ho
‫detto che questo punto qui è sempre relativo alla cartella in cui
‫è stata effettivamente avviata l'applicazione del nodo.
‫E quindi questa è la cartella home.
‫E quindi stiamo praticamente cercando
‫questo file qui nella cartella home, ok.
‫Quindi quello che dovrei usare invece è il nome dir,
‫variabile che è disponibile per noi ovunque.
‫Quindi va così.
‫Tutto bene.
‫Dagli un altro
‫salvataggio e ripulisci la console ed eseguilo di nuovo.
‫E così ora funziona.
‫E quindi
‫ecco il risultato di questa console. log che abbiamo quaggiù, quindi
‫processa. argv
‫e fondamentalmente questo è un
‫array di questi due argomenti per l'esecuzione di questo processo del nodo.
‫Quindi, questo qui è fondamentalmente
‫dove si trova il comando node.
‫Quindi questo equivalente a
‫questo nodo e poi al secondo,
‫quindi questo percorso a questo file è in realtà questo qui, ok.
‫Quindi chiudiamo questo qui
‫e aggiungiamo una specie di opzione qui.
‫Quindi scriverò,
‫trattino, importazione trattino e quindi sono
‫sicuro che hai visto qualcosa di
‫simile molte volte prima.
‫Ad esempio, quando salviamo un pacchetto come dipendenza dev
‫lo facciamo in questo modo.
‫Salva dev, quindi usiamo lo stesso
‫tipo di formato per specificare le opzioni.
‫Va bene, trattino
‫trattino e poi qualunque stringa mettiamo qui.
‫E quindi scelgo di specificare sostanzialmente l'opzione di
‫importazione in questo modo.
‫E quindi vedi che ora
‫il terzo argomento è l'importazione di trattini, ok?
‫E quindi questo significa che ora
‫possiamo andare avanti e fondamentalmente utilizzare questi
‫dati
‫qui per scrivere un'applicazione da riga di comando molto semplice
‫in pratica che importerà i dati quando specifichiamo questa
‫opzione e cancellerà i
‫dati quando specifichiamo l'opzione di eliminazione, tutto Giusto?
‫Quindi, facciamolo davvero.
‫Quindi,
‫se il processo. argv ed è
‫un
‫array e vogliamo il terzo.
‫Quindi zero, uno, due.
‫Quindi, se quell'elemento è uguale a import well,
‫allora vogliamo eseguire l'importazione dei dati.
‫Destra?
‫Se...
‫Processi. argv due è
‫uguale, per eliminare
‫allora vogliamo eseguire l'eliminazione dei
‫dati.
‫E questo è tutto.
‫Quindi, questo dovrebbe effettivamente
‫darci il risultato che stiamo cercando.
‫Finiamo questo qui.
‫E quindi ora eseguiamo il comando
‫qui con delete per eliminare tutti i dati
‫che abbiamo nel database.
‫Quindi proviamolo.
‫Sta facendo qualcosa e
‫i dati sono stati eliminati con successo.
‫Quindi diamo un'occhiata a questo ora.
‫E se eseguiamo ora questo percorso per ottenere tutti
‫i tour, in effetti non abbiamo risultati.
‫Quindi, tutti i nostri tour sono finiti.
‫Quindi ha funzionato.
‫Ora questo processo qui è fondamentalmente ancora in esecuzione.
‫E quindi risolviamolo
‫rapidamente, il che è abbastanza facile.
‫Quindi, questo è uno nuovo che non abbiamo ancora usato.
‫Che è il processo. esci, va
‫bene?
‫Ora questo processo. exit è un modo aggressivo
‫per fermare un'applicazione,
‫ma in questo caso non è
‫un problema perché è solo uno script
‫molto piccolo che stiamo eseguendo qui e non un'applicazione reale, giusto?
‫Copiamo semplicemente la stessa cosa
‫qui nella nostra funzione di importazione dei dati.
‫E quindi ora la smetterò.
‫E solo per dimostrare che funziona, lo
‫eseguirò di nuovo
‫in modo che i dati siano
‫stati eliminati correttamente e quindi sia uscito dal processo.
‫Tutto bene.
‫E quindi ora è il momento di eseguire effettivamente la funzione
‫che ci interessava in primo luogo.
‫Quindi con il flag di importazione, in pratica.
‫Quindi l'opzione di importazione.
‫Quindi eseguiamolo
‫e vediamo se funziona davvero.
‫E così non è stato.
‫Allora perché?
‫Quindi qui ci dice che un tour deve avere una dimensione di gruppo.
‫Allora da dove viene?
‫E qui vediamo molti errori di convalida.
‫Quindi qualcosa deve essere andato storto qui.
‫Quindi sì,
‫abbiamo l'immagine di copertina, abbiamo la descrizione del tour.
‫Abbiamo il prezzo.
‫Beh, è strano.
‫Dimensione massima del
‫gruppo, fammi controllare se è successo qualcosa qui.
‫In realtà abbiamo nove tour
‫qui e penso che nove sia tutto quello che abbiamo.
‫E quindi a me sembra che abbia funzionato davvero.
‫Ma diamo una rapida occhiata ai nostri dati qui.
‫Quindi, solo per capire perché questo accade effettivamente.
‫Quindi tour semplice qui e così possiamo
‫già vedere,
‫in realtà il problema che sta accadendo.
‫Quindi abbiamo tutti
‫questi tour quindi quelli originali.
‫Ma poi dall'ultima sezione, abbiamo
‫questi tre qui
‫che abbiamo aggiunto usando la nostra API basata su file.
‫Allora, lo ricordi?
‫Quindi allora abbiamo specificato solo il nome, la
‫durata e la difficoltà e nient'altro.
‫E quindi in
‫questo momento il nostro script sta cercando di importare questi tre tour.
‫Ma ovviamente non ci interessano
‫affatto e quindi andiamo avanti e salviamo questo qui, ok.
‫Quindi esci da questo processo e
‫quindi in realtà questo processo. exit può essere al di fuori
‫del blocco try catch ed essere semplicemente qui entro la fine
‫della funzione.
‫Quindi, non importa
‫se c'è un errore o meno, uscirà sempre dal processo.
‫Tutto bene.
‫Quindi cancelliamo tutto.
‫Va bene, svuota di nuovo la console.
‫Ora importa, e
‫sì.
‫Quindi i dati sono stati caricati con successo.
‫Come del resto eccoci di nuovo qui.
‫Quindi ora funziona al 100%,
‫abbiamo i nostri dati con cui possiamo iniziare a
‫lavorare e quindi, sì.
‫Il nostro lavoro con questo qui è finito.
‫Quindi, una piccola funzione carina, o un
‫piccolo script in realtà.
‫Spero che tutto abbia avuto senso per te
‫e sì che sia stato anche un esercizio divertente per te.
‫Ad ogni modo, ci vediamo
‫nel prossimo video in cui finalmente inizieremo a utilizzare tutti questi dati e
‫a migliorare la nostra
‫API implementando un paio di simpatiche funzionalità.