‫Instructeur : Faisons maintenant
‫une petite pause dans la construction
‫de notre API et construisons un petit
‫script amusant qui importera les données de la tournée de notre
‫fichier JSON dans la base de données MongoDB.
‫Et je n'étais pas
‫vraiment sûr si je devais inclure cette vidéo
‫dans le cours ou si je devais simplement venir
‫avec le script déjà dans les fichiers de démarrage du cours.
‫Mais je pensais que c'était un bon petit exercice et
‫donc je l'ai quand même inclus.
‫Alors, de toute façon, commençons maintenant.
‫Donc, en gros, nous allons créer un
‫script qui chargera simplement les données du fichier JSON comme je
‫viens de le dire dans la base de données.
‫Et ce script est complètement
‫indépendant du reste de notre application express.
‫Et donc nous allons exécuter cela complètement
‫séparément de la ligne de commentaire juste pour tout importer une fois.
‫D'accord, permettez-moi de créer le script
‫ici même dans le dossier de données.
‫Donc nouveau fichier,
‫importation,
‫données de développement. js.
‫D'accord.
‫Alors, de quoi aurons-nous besoin pour ça ?
‫Nous aurons besoin de mangouste
‫bien sûr, alors commençons par ça.
‫Ou en fait, allons simplement de l'avant dans le serveur. js et copiez
‫ce truc
‫parce que pourquoi l'écrire à nouveau.
‫Alors copions tout, puis supprimons
‫ce dont nous n'avons pas besoin.
‫Nous n'avons donc pas besoin de notre application express, nous avons également
‫besoin du fichier . env car
‫nous avons besoin de nos
‫variables d'environnement pour pouvoir nous reconnecter à la base de données, d'accord.
‫Et nous devons nous reconnecter à la base de
‫données dans ce script car il s'exécute de manière
‫totalement indépendante de l'application express.
‫Il ne fonctionnera qu'une seule fois au début.
‫Ensuite, nous avons besoin d'accéder au module du système de fichiers car
‫nous voulons bien sûr lire le fichier JSON.
‫Donc, nous avons besoin de
‫fs et enfin nous avons également besoin d'accéder au modèle de tournée, car
‫le modèle de tournée
‫est l'endroit où nous voulons écrire les tournées, n'est-ce pas ?
‫Donc, le tour est égal
‫et maintenant trouvons le chemin là-bas, donc
‫à partir de l'endroit où nous sommes
‫en ce moment, nous devons monter d'un niveau.
‫Et que se passe-t-il ici avec ces citations ?
‫Très bien, donc un niveau supérieur
‫et nous sommes dans les données de développement.
‫Nous avons donc besoin d'un autre niveau pour
‫être dans le dossier principal.
‫Et à partir de là, nous entrons dans les modèles et
‫dans le modèle de tournée.
‫D'accord et cela devrait être tout pour l'installation.
‫Commençons maintenant par lire le fichier.
‫Alors, lisez le fichier JSON et cela
‫devrait être assez simple.
‫Les visites sont donc à fs. readfile et nous
‫pouvons bien sûr utiliser la version synchrone.
‫Et disons simplement des visites simples. json, d'accord.
‫Et
‫puis, aussi l'encodage.
‫Donc, encodage de fichier, utf huit.
‫Donnez-lui une sauvegarde.
‫Et maintenant, nous pouvons écrire la fonction réelle
‫qui importera les données dans la base de données.
‫Importez donc les données dans la base de données.
‫D'accord, juste comme ça.
‫Et créons donc cette fonction.
‫Importer des données, importer des données,
‫oui.
‫Et ce sera une
‫fonction asynchrone qui n'a besoin d'aucun
‫argument et donc utilisons à nouveau un bloc try catch ici.
‫Et ici, je vais simplement le connecter à la console s'il
‫y a une
‫erreur, juste pour savoir ce qui se passe dans ce cas.
‫Et maintenant,
‫ici, ce que nous allons faire est très simple.
‫Nous allons
‫simplement attendre, tournée. créer.
‫Nous avons donc déjà utilisé la tournée. créer et
‫nous passons alors un objet à l'époque non?
‫Mais la méthode create peut également accepter un tableau d'objets.
‫Et dans
‫ce cas, il créera simplement un nouveau
‫document pour chacun des objets du tableau.
‫Donc, très simple, tout
‫ce que nous avons à faire est de spécifier nos données de tournées ici, n'est-ce pas ?
‫Et en fait, ce n'est pas correct à
‫100% car rappelez-vous qu'il s'agit de JSON.
‫Et nous devons donc d'abord le convertir en
‫un objet JavaScript à l'aide de json. analyser.
‫D'accord et maintenant nous avons en
‫fait un tableau d'objets
‫JavaScript que nous pouvons maintenant passer dans la méthode create, d'accord.
‫Et si cela
‫a réussi, la ligne suivante sera
‫exécutée et nous pouvons donc dire ici que les données ont
‫été chargées avec succès, d'accord.
‫Et cela devrait déjà faire le travail.
‫Et maintenant, qu'en est-il des données déjà présentes dans la base de données ?
‫Nous pouvons également créer un
‫moyen simple de supprimer toutes ces données en même temps.
‫Et donc allons-y simplement et faisons-le aussi.
‫Donc, disons, supprimez toutes les
‫données de la collection.
‫Et cette couleur jaune étrange que vous
‫voyez ici vient en fait d'une extension que j'ai installée ici.
‫Et donc pour m'en débarrasser,
‫je vais simplement réécrire la base de données, d'accord.
‫Supprimez donc les données
‫et encore une fois, ce sera une fonction asynchrone
‫sans aucun argument.
‫Et permettez-moi de copier ce code ici.
‫Alors, supprimez-le
‫et maintenant à propos de la
‫suppression elle-même, nous pouvons utiliser la fonction de suppression de plusieurs.
‫D'accord et en fait, je vous
‫ai montré celui-ci dans l'introduction de MongoDB, n'est-ce pas ?
‫Où nous pourrions utiliser en supprimer
‫plusieurs, puis simplement ne rien y transmettre, ce
‫qui supprimerait
‫alors tous les documents d'une certaine collection, n'est-ce pas ?
‫Et donc la mangouste
‫a implémenté la même fonction ici sur le modèle, d'accord.
‫Donc, dans
‫ce cas, le modèle de tournée a accès à cette méthode de
‫suppression de plusieurs qui fera alors
‫exactement la même chose que la suppression de plusieurs dans MongoDB natif, n'est-ce pas ?
‫Alors, rappelez-vous que la mangouste
‫n'est qu'une couche d'abstraction au-dessus de MongoDB.
‫C'est pourquoi il n'utilise pas exactement les mêmes fonctions
‫mais il nous donne tout de même accès à des
‫fonctions similaires ou portant le même nom.
‫Donc, delete many a en fait
‫le même nom que la fonction native MongoDB, d'accord ?
‫Encore une fois, ce que cela va faire, c'est
‫simplement de continuer et de supprimer tous les documents de la collection de visites.
‫Donc, nous avons nos deux fonctions ici,
‫mais si nous exécutons maintenant ce fichier,
‫rien ne se passera.
‫Et c'est
‫parce que nous n'appelons aucune de ces fonctions nulle part, n'est-ce pas ?
‫Maintenant, nous
‫pourrions aller de l'avant et simplement écrire quelque chose comme importer des données ici,
‫puis simplement appeler la fonction ici,
‫mais je voulais rendre cela un peu plus amusant.
‫Apprenons donc maintenant un tout petit peu
‫à interagir avec la ligne de commande, d'accord.
‫Et donc je vais
‫continuer et exécuter ce fichier sans appeler aucune de ces fonctions.
‫Mais à la place, je vais
‫me connecter au processus de la console. argv, d'accord.
‫Juste pour que nous puissions voir quel processus. argv est en fait
‫pour que nous puissions ensuite l'utiliser.
‫D'accord.
‫Permettez-moi d'ouvrir ici un autre terminal, puis
‫j'utiliserai node, j'entrerai dans
‫les données de développement, puis
‫dans les
‫données, puis j'y importerai les données de développement.
‫Et nous obtenons quelques erreurs ici.
‫Voyons où.
‫Ah, ouais donc c'est à cause de ça, de
‫ce nom de fichier.
‫Donc, je suppose que nous devrions spécifier le chemin vers là essentiellement.
‫Exécutons donc celui-ci encore et encore,
‫nous avons cette erreur.
‫Et oui, bien sûr, j'obtiens cette erreur.
‫C'est stupide.
‫Rappelez-vous comment je vous
‫ai dit que ce point ici est toujours relatif au dossier où
‫l'application de nœud a été réellement démarrée.
‫Et c'est donc le dossier d'accueil.
‫Et donc nous recherchons essentiellement ce
‫fichier ici dans le dossier de départ, d'accord.
‫Donc, ce que je devrais utiliser à la place, c'est le nom
‫de répertoire, une variable qui est disponible partout.
‫Alors ça se passe comme ça.
‫D'accord.
‫Donnez-lui une autre
‫sauvegarde et effacez la console et exécutez-la à nouveau.
‫Et maintenant ça marche.
‫Et voici
‫donc le résultat de cette console. log que nous avons ici, alors
‫procédez. argv
‫et fondamentalement c'est un
‫tableau de ces deux arguments d'exécution de ce processus de nœud.
‫Donc, c'est ici essentiellement l'endroit
‫où se trouve la commande de nœud.
‫Donc, cet équivalent à
‫ce nœud, puis au second, donc
‫ce chemin d'accès à ce fichier est en fait celui-ci ici, d'accord.
‫Alors laissons cela ici
‫et ajoutons une sorte d'option ici.
‫Je vais donc
‫écrire, dash, dash importer et je suis
‫sûr que vous avez déjà vu quelque chose
‫comme ça plusieurs fois auparavant.
‫Par exemple, lorsque nous enregistrons un package en tant que dépendance de
‫développement, nous le faisons comme ceci.
‫Save dev, et nous utilisons donc le
‫même type de format pour spécifier les options.
‫Bon alors, tiret tiret et
‫puis quelle que soit la chaîne que nous mettons ici.
‫Et donc j'ai choisi de spécifier essentiellement
‫l'option d'importation comme celle-ci.
‫Et donc vous voyez que
‫maintenant le troisième argument est l'importation de tirets, d'accord ?
‫Et cela signifie que nous pouvons
‫maintenant aller de l'avant et utiliser ces
‫données ici
‫afin d'écrire une application de ligne de commande très simple
‫qui importera les données lorsque nous spécifierons cette option
‫et supprimera les données
‫lorsque nous spécifierons l'option de suppression, tout droit?
‫Alors, faisons-le en fait.
‫Donc,
‫si processus. argv et c'est un
‫tableau
‫et nous voulons le troisième.
‫Donc zéro, un, deux.
‫Donc, si cet élément est égal à bien importer,
‫alors nous voulons exécuter des données d'importation.
‫Droit?
‫Si...
‫Traiter. argv deux est
‫égal, pour supprimer
‫alors nous voulons exécuter la suppression
‫des données.
‫Et c'est tout.
‫Donc, cela devrait en fait
‫nous donner le résultat que nous recherchons.
‫Finissons-en ici.
‫Et maintenant, exécutons la commande ici avec
‫delete afin de supprimer toutes les données que nous avons
‫dans la base de données.
‫Alors essayons ça.
‫Il fait quelque chose
‫et les données sont supprimées avec succès.
‫Jetons donc un œil à cela maintenant.
‫Et si nous exécutons maintenant cet itinéraire pour tous
‫les circuits, nous n'aurons aucun résultat.
‫Donc, toutes nos tournées sont maintenant terminées.
‫Donc ça a marché.
‫Maintenant, ce processus ici est fondamentalement toujours en cours d'exécution.
‫Et donc corrigeons rapidement
‫cela, ce qui est assez facile.
‫Donc, c'est un nouveau que nous n'avons pas encore utilisé.
‫Quel est le processus. sortie, d'accord
‫?
‫Maintenant ce processus. exit est une manière agressive d'arrêter
‫une application, mais dans
‫ce cas, ce n'est pas un
‫problème car il s'agit en fait d'un très petit
‫script que nous exécutons ici et non d'une vraie application, n'est-ce pas ?
‫Copiez simplement la même chose
‫ici dans notre fonction d'importation de données.
‫Et maintenant je vais arrêter.
‫Et juste pour montrer que cela fonctionne,
‫je vais l'exécuter
‫à nouveau afin que les données
‫soient supprimées avec succès, puis le processus a été interrompu.
‫D'accord.
‫Et maintenant, il est temps d'exécuter la fonction qui
‫nous intéressait en premier lieu.
‫Donc, avec le drapeau d'importation, en gros.
‫Donc l'option d'importation.
‫Alors exécutons
‫cela et voyons si cela fonctionne réellement.
‫Et ce n'est pas le cas.
‫Alors pourquoi est-ce?
‫Il nous dit donc ici qu'une visite doit avoir une taille de groupe.
‫Alors d'où ça vient ?
‫Et nous voyons beaucoup d'erreurs de validation ici.
‫Donc quelque chose a dû mal tourner ici.
‫Alors oui, nous
‫avons l'image de couverture, nous avons la description de la tournée.
‫Nous avons le prix.
‫Eh bien, c'est bizarre.
‫Taille maximale du
‫groupe, permettez-moi de vérifier si quelque chose s'est passé ici.
‫En fait, nous avons neuf tournées
‫ici et je pense que neuf est en fait tout ce que nous avons.
‫Et donc pour moi, il semble que cela ait réellement fonctionné.
‫Mais jetons un coup d'œil rapide à nos données ici.
‫Donc, juste pour comprendre pourquoi cela se produit réellement.
‫Donc tour simple ici et donc on
‫peut déjà
‫voir, en fait le problème qui se passe.
‫Nous avons donc toutes
‫ces tournées donc les originales.
‫Mais ensuite, à partir de la dernière section,
‫nous avons ces trois ici
‫que nous avons en quelque sorte ajoutés à l'aide de notre API basée sur des fichiers.
‫Alors, tu te souviens de ça ?
‫Donc, à l'époque, nous ne spécifiions que le nom, la
‫durée et la difficulté et rien d'autre.
‫Et donc en
‫ce moment, notre script essaie d'importer ces trois tournées.
‫Mais bien sûr, ils ne nous
‫intéressent pas du tout et alors allons-y et enregistrons ceci ici, d'accord.
‫Ensuite, quittez ce processus et donc
‫en fait ce processus. exit peut être en dehors du
‫bloc try catch et être simplement ici à la fin de
‫la fonction.
‫Ainsi, peu importe
‫s'il y a une erreur ou non, le processus se terminera toujours.
‫D'accord.
‫Alors supprimons tout.
‫Très bien, effacez à nouveau la console.
‫Maintenant, importez, et
‫oui.
‫Donc les données ont été chargées avec succès.
‫Comme d'ailleurs nous revoilà.
‫Alors maintenant, cela fonctionne à 100%,
‫nous avons nos données avec lesquelles nous pouvons commencer à travailler
‫maintenant et donc, oui.
‫Notre travail avec celui-ci est terminé.
‫Donc, une jolie petite fonction, ou un joli
‫petit script en fait.
‫J'espère que tout avait un sens pour
‫vous et oui que c'était un exercice amusant pour vous aussi.
‫Quoi qu'il en soit, rendez-vous
‫dans la prochaine vidéo où nous commençons enfin à utiliser toutes ces
‫données et à améliorer
‫notre API en implémentant quelques fonctionnalités intéressantes.