‫Enseignant : Commençons maintenant à créer des
‫documents, à tester le modèle et à vraiment commencer à utiliser Mongoose.
‫Et je suis vraiment excité à
‫propos de cette vidéo, alors commençons vraiment ici.
‫Donc, ce que nous allons faire, c'est créer une nouvelle variable,
‫et je vais l'appeler testTour, et ce sera
‫un nouveau document créé à
‫partir du modèle de tournée que nous
‫avons créé lors de la dernière leçon.
‫Donc, ce
‫que nous allons faire, c'est dire nouveau Tour,
‫puis passer un objet avec les données.
‫Alors nommez, disons, encore une
‫fois, « The Forest Hiker », comme
‫nous l'avons utilisé auparavant, puis la note,
‫disons 4. 7,
‫puis le
‫prix, disons 497, d'accord ?
‫Donc, il s'agit, encore une fois, d'un nouveau document
‫que nous avons créé à partir d'un
‫modèle de tournée, ou de
‫constructeurs de fonctions, et comme je l'ai
‫déjà dit, il s'agit en quelque sorte d'utiliser
‫des constructeurs de fonctions JavaScript, ou des classes JavaScript si vous
‫utilisez ES6, essentiellement pour créer
‫de nouveaux objets à partir d'une
‫classe, n'est-ce pas, et c'est donc exactement la même
‫syntaxe, en fait, nous
‫utilisons donc le mot-clé name, puis le
‫nom de la classe dans ES6, comme ça, d'accord ?
‫Maintenant, ici, ce n'est pas exactement la
‫même chose, mais cette analogie
‫est utile pour comprendre comment cela fonctionne.
‫Ainsi, ce document de visite de test que nous venons
‫de créer est une instance du modèle de visite,
‫et il contient donc maintenant quelques méthodes que
‫nous pouvons utiliser pour
‫interagir avec la base de données.
‫Alors laisse-moi te montrer ça.
‫Nous pouvons donc maintenant dire testTour. save, et cela l'enregistrera ensuite
‫dans la collection
‫de visites de la base de données, d'accord, et
‫c'est vraiment aussi simple que cela.
‫Encore une fois, nous avons notre instance de document
‫qui est testTour, et là-bas,
‫nous pouvons ensuite appeler la méthode save
‫afin d'enregistrer le document dans la base de données.
‫Maintenant, cette sauvegarde ici renverra
‫alors une promesse que nous pourrons ensuite consommer.
‫Donc pour l'instant, utilisons alors pour cela, et à
‫l'avenir, nous utiliserons en fait async
‫wait afin de consommer ces promesses, mais pour l'instant, gardons les
‫choses simples et ne
‫créons plus de fonctions, et donc à
‫la place, nous sommes en utilisant
‫simplement la méthode then ici.
‫Donc ici, nous avons accès au document qui vient
‫d'être enregistré dans la base de données.
‫Donc, fondamentalement, la valeur de résultat de la promesse
‫renvoyée par la méthode save est le
‫document final tel qu'il se trouve dans la base de données.
‫Et donc maintenant, allons de
‫l'avant et enregistrons le document sur la console, d'accord ?
‫Maintenant, d'un autre côté, l'enregistrement de
‫ce document dans la base de données peut
‫également mal tourner, alors attrapons cette erreur, d'accord ?
‫Donc, comme auparavant, nous avons utilisé la méthode
‫catch afin de détecter toute erreur potentielle. Ainsi, s'il y a
‫une erreur lors de l'enregistrement du document
‫dans la base de données, nous
‫pourrons détecter cette erreur ici
‫dans cette méthode.
‫Bon, donc en gros, c'est ici dans cette fonction
‫que je passe en catch.
‫D'accord, pour l'instant, tout ce que je veux faire, c'est aussi
‫de le connecter à la console.
‫Disons « Erreur », ajoutez quelques emojis ici
‫pour le rendre plus visible
‫dans la console, puis nous pouvons transmettre
‫un deuxième argument dans le journal de la
‫console, qui sera alors l'erreur, d'accord ?
‫Es-tu prêt?
‫Ensuite, sauvegardons-le maintenant, et
‫cela exécutera ensuite le code qui se trouve ici,
‫donc en gros, créez cette nouvelle visite et essayez
‫de l'enregistrer immédiatement dans la base de données, d'accord ?
‫Alors, faisons une sauvegarde maintenant,
‫et voyons ce qui se passe dans la
‫console, et en effet, c'est parti.
‫Vous voyez donc que c'est le
‫document qui vient d'être enregistré dans notre base de données, d'accord ?
‫Donc, ici, nous voyons également l'ID,
‫et il est simplement généré automatiquement par
‫MongoDB, et c'est simplement l'identifiant unique du document.
‫Ainsi, tout comme cela s'est produit auparavant dans la
‫section MongoDB, nous obtenons automatiquement cet identifiant unique
‫pour le nouvel objet.
‫Ensuite, Mongoose ajoute également automatiquement ce V
‫et le met à zéro ici, mais ce
‫n'est pas vraiment important à ce stade, d'accord ?
‫Ce qui compte ici, c'est
‫que notre nouveau document a été ajouté avec succès à
‫la base de données, et juste pour
‫nous en assurer, passons à Compass et examinons notre base de données là-bas.
‫Donc ici, nous avons la collection de
‫visites, puis nous avons le document que nous venons de créer.
‫Il a donc exactement le même ID, et bien sûr toutes
‫les autres données que nous y avons insérées,
‫et c'est donc bien l'objet que
‫nous venons de créer.
‫Et gardez à l'esprit que nous avions en
‫fait supprimé la collection de visites
‫ici dans l'une des vidéos précédentes,
‫à droite, mais Mongoose a automatiquement créé
‫cette nouvelle collection ici dès que nous
‫avons créé le premier document utilisant
‫le modèle de visite, et
‫donc ce nom
‫ici vient essentiellement à partir de ce modèle de
‫tournée, il nous donne simplement ce nom pluriel, tout comme nous l'avions auparavant.
‫Parfait, nous venons de faire vraiment interagir notre application
‫express avec une base de données MongoDB pour
‫la toute première fois,
‫et c'est en fait vraiment incroyable, si vous voulez mon avis.
‫Cela signifie donc qu'à l'heure
‫actuelle, nous sommes en mesure de créer des documents directement à partir de notre code.
‫Donc, cela me rend vraiment heureux, et essayons donc
‫à nouveau avec un autre,
‫d'accord, mais en fait avant de faire
‫cela, je veux simplement recharger
‫ce fichier ici qui essaiera ensuite d'enregistrer à
‫nouveau ce document ici dans la base de données
‫, à droite, simplement parce que tout ce
‫code ici est
‫exécuté à chaque fois que nous sauvegardons le fichier.
‫Maintenant, essayons de deviner ce qui va se passer
‫dès que j'enregistre ce fichier.
‫Peux-tu deviner?
‫Attendons, et en
‫effet nous obtenons quelque chose de
‫différent maintenant, nous obtenons
‫une erreur ici, et l'erreur que
‫nous voyons est cette collection d'erreurs de
‫clé en double, qui indique ici cette clé en double, d'accord ?
‫Nous avons donc déjà une tournée avec le
‫nom de « Forest Hiker »,
‫et maintenant nous essayons d'en créer une
‫autre, et puisque dans notre schéma, nous avons
‫cette propriété unique ici, ce n'est pas autorisé, vous
‫vous en souvenez ?
‫Nous avons donc défini
‫cet unique ici sur true afin qu'il soit
‫impossible d'avoir deux tournées avec le même nom,
‫et nous venons donc de prouver que cela fonctionne réellement.
‫Très bien, alors remplaçons simplement le code que
‫nous avons ici afin
‫de créer une nouvelle tournée avec un autre nom.
‫Appelons-le « The Park Camper »
‫et supprimons le prix ainsi que
‫la note.
‫Alors, pouvez-vous deviner ce qui va se passer maintenant?
‫Soyons clairs, ou en fait il l'a
‫déjà chargé car dès que
‫j'ai cliqué ici, il a ensuite enregistré le fichier,
‫et donc, oui, nous venons d'avoir une autre erreur, vous pouvez
‫donc le voir ici, ce qui
‫signifie que nous n'avons pas réussi
‫à enregistrer ce document dans la base de
‫données, et ce que nous avons ici maintenant, c'est une
‫erreur de validation provenant
‫du champ de prix disant "Un tour doit
‫avoir un prix", et c'est donc
‫exactement le message que nous avons spécifié ici, n'est-ce pas ?
‫Tout simplement parce que dans cette ligne
‫nous avons dit que le prix est un champ obligatoire, d'accord,
‫et donc ce requis,
‫comme je l'ai mentionné, est un validateur, et donc
‫ici, nous obtenons alors une erreur de validation.
‫Et donc
‫maintenant corrigeons cela et spécifions le prix, disons 997, et
‫donnons-lui une autre sauvegarde.
‫Maintenant, cette fois, cela devrait fonctionner
‫car la notation n'est pas requise, et donc
‫lorsque nous descendons ici,
‫notre document a été enregistré avec
‫succès dans la base de données, vous voyez ?
‫Maintenant, nous n'avons pas spécifié la note ici dans cette tournée d'essai,
‫mais vous voyez qu'elle est toujours de 4. 5, et c'est parce que nous
‫avons défini la valeur par
‫défaut à 4. 5 ici.
‫Donc, je voulais
‫juste vous montrer cela ici dans cet exemple rapide.
‫Bon, nous avons encore réussi, alors revenons
‫ici, rechargez, vous cliquez sur ce
‫bouton, et en effet nous avons
‫maintenant nos deux tournées.
‫Génial, et je me souviens à quel point j'ai été
‫formidable lorsque cela a fonctionné la première
‫fois lorsque j'ai commencé à apprendre Express et Mongo,
‫et comment créer ces applications,
‫et j'espère donc vraiment que vous ressentez
‫la même chose en ce
‫moment, car vous venez de créer
‫vos tout premiers documents avec Express
‫et, bien sûr, MongoDB.