‫- : Dans cette vidéo, implémentons la mise à jour des documents.
‫Et donc, ici, dans notre gestionnaire de tournée de mise à jour, commençons
‫par en faire une fonction asynchrone.
‫Ensuite, ou essayez catch block, et donc je le fais
‫très rapidement maintenant, car nous sommes déjà habitués à cela à
‫ce stade.
‫Droit?
‫Donc, cela va dans le bloc try, puis
‫j'obtiens simplement celui-ci, ici, à partir du bloc catch de cette
‫autre fonction.
‫D'accord, donc.
‫Nous y voilà.
‫Et maintenant, ce que nous
‫devons faire ici au début de ce
‫bloc d'essai, c'est essentiellement rechercher le document que
‫nous voulons mettre à jour, puis le mettre à jour, d'accord ?
‫Et nous pouvons en
‫fait faire tout cela en une seule commande avec mongoose.
‫Et, rappelez-vous, encore une fois, que nous allons mettre à jour la
‫tournée en fonction d'une pièce d'identité, d'accord ?
‫Donc, c'est une situation similaire à celle-ci ici, où
‫nous trouvons par ID.
‫Et maintenant, nous pouvons en fait faire quelque chose de
‫très similaire, qui est de trouver par ID et de mettre à jour.
‫Encore une fois, tout dans une seule requête.
‫Alors, faisons une tournée. findByID
‫et mise à jour.
‫D'accord, alors, qu'avons-nous besoin de passer ici ?
‫Eh bien, bien sûr, l'ID, afin que nous puissions d'abord trouver le document
‫qui doit être mis à jour.
‫Donc, comme avant, c'est req. paramètres. ID, puis
‫les données que nous voulons réellement modifier.
‫Et ces données seront dans le corps, tout
‫comme dans la demande de publication.
‫Donc req. corps, d'accord ?
‫Et puis, en fait, en tant que
‫troisième argument, nous pouvons également corriger certaines options, et nous le ferons.
‫Et la première option que je veux spécifier est
‫nouvelle et définie sur true.
‫Parce que de cette façon, le nouveau document mis à
‫jour est celui qui sera renvoyé.
‫Et puisque nous voulons renvoyer ce document mis
‫à jour au client, nous voulons
‫toujours que cette méthode renvoie réellement ce nouveau document, d'accord ?
‫Ainsi, de cette façon, il est alors
‫logique d'attendre cette requête, puis de l'enregistrer dans une nouvelle variable.
‫Alors appelez-le simplement tour
‫ici, puis à nouveau, attendez le résultat de cette requête.
‫Donc, toutes ces méthodes que nous avons utilisées
‫jusqu'à présent lors de la tournée, alors recherchez par ID et
‫mettez à jour, ou, eh bien, ne créez pas vraiment, mais recherchez par
‫ID ou recherchez, toutes celles-ci renverront des requêtes, elles sont donc des requêtes
‫méthodes et laissez-moi vous montrer
‫cela dans la documentation de la mangouste.
‫Donc, jusqu'à présent, nous n'avons pas jeté un coup d'œil
‫à la documentation jusqu'à présent.
‫Et donc, faisons-le rapidement.
‫Donc, sur le modèle, qui dans notre cas est tour, nous avons
‫toutes ces méthodes de requête, n'est-ce pas ?
‫Donc, vous voyez trouver, vous voyez en trouver un, vous voyez trouver par ID, ce
‫qui n'est qu'un raccourci pour en trouver un.
‫Ensuite, vous voyez rechercher par ID et mettre à
‫jour, qui est celui que
‫nous utilisons actuellement, et qui, en fait, n'est qu'un
‫raccourci pour rechercher un et mettre à jour, où nous recherchons un identifiant, si
‫similaire à ce que nous eu lors de la dernière leçon, d'accord ?
‫Et en fait, nous pouvons cliquer sur n'importe lequel
‫d'entre eux, alors faisons celui que nous
‫utilisons actuellement, et cela nous amènera alors vraiment à la documentation
‫de l'API qui nous montre comment vraiment utiliser une certaine méthode.
‫Vous voyez donc que nous avons transmis l'ID,
‫donc la valeur, à partir de l'ID à interroger, nous avons transmis
‫l'objet avec les données à mettre à jour et nous avons transmis un objet options.
‫Et ici, nous pouvons réellement voir
‫les options que nous pouvons définir, alors
‫rappelez-vous, nous avons simplement défini new sur true, et comme
‫il est dit ici, cela renverra alors le document
‫modifié plutôt que l'original.
‫Maintenant, un autre que nous voulons réellement définir
‫sur true est celui d'exécuter des validateurs, de sorte qu'à chaque fois que
‫nous mettons à jour un certain document, les validateurs que nous
‫avons spécifiés dans le schéma s'exécutent à nouveau, d'accord ?
‫Et nous parlerons beaucoup des validateurs et de la validation un peu
‫plus loin dans la section,
‫mais je vais en rester là pour l'instant afin que nous, fondamentalement, ne
‫l'oublions pas.
‫D'accord?
‫Sauvegardez-le maintenant, et en fait, je veux revenir ici juste
‫pour vous montrer combien de
‫méthodes nous avons réellement dans la mangouste.
‫Donc, sur le modèle, nous avons toutes ces méthodes ici que
‫vous voyez dans cette liste.
‫Ainsi, par exemple, nous avons utilisé create avant, nous
‫avons également utilisé find.
‫D'accord?
‫Et donc ceux que vous voyez ici en haut,
‫ils sont disponibles directement sur le modèle, et
‫ça, dans notre cas, c'est la tournée.
‫Maintenant, ici vous, par exemple, voyez
‫aussi le modèle. prototype. en toute sécurité par exemple.
‫Et celui-ci, en fait, nous l'utilisions
‫déjà dès que nous avons commencé à travailler avec la mangouste.
‫Donc, je ne sais pas si vous êtes familier avec cela,
‫mais dans le modèle de script java. prototype signifie toujours un
‫objet créé à partir d'une classe, ou dans ce cas,
‫créé à partir d'un modèle.
‫Et donc, la méthode de sauvegarde ici, fait référence à une méthode
‫de sauvegarde appelée sur un document et non sur une tournée.
‫Et rappelez-vous que c'est exactement ce que nous avons fait.
‫Et je pense que je l'ai toujours ici comme commentaire.
‫Ouais, juste ici.
‫Donc, nous avons eu un tour, cette nouvelle variable de tour ici
‫qui a été créée à partir du
‫modèle de tour, et donc ce nouveau tour ici a eu accès à la
‫méthode save car cela fait partie de l'objet prototype de cette classe.
‫Très bien, maintenant je ne veux pas vous ennuyer
‫avec les principes fondamentaux du script Java,
‫mais c'est important pour comprendre la documentation, d'accord ?
‫Parce qu'à un moment donné, vous aurez besoin d'utiliser de la
‫documentation, car la mangouste est yute.
‫Et je vais en fait vous apprendre beaucoup de
‫choses qui sont importantes tout au long de ce cours, mais parfois
‫vous aurez toujours besoin de quelque chose que je ne vous ai
‫pas montré dans ce cours.
‫Et il est donc important que
‫vous compreniez vraiment la documentation également, d'accord ?
‫Et donc, encore une fois, quand vous voyez le modèle. prototype ici, vous
‫savez que la méthode de sauvegarde
‫ici va être disponible sur toutes les instances
‫créées via un modèle, d'accord ?
‫Et donc, pas le modèle lui-même.
‫Ainsi, par exemple, si vous avez essayé la tournée. sauf que vous
‫ne pourriez pas l'utiliser.
‫Cela vous donnerait une erreur, mais à la place, si vous
‫essayiez d'enregistrer sur un document créé lors de la
‫visite, cela fonctionnerait bien sûr, d'accord ?
‫J'espère que cela à du sens.
‫Et, de toute façon, vous voyez que nous
‫avons beaucoup d'autres choses, donc nous devons interroger, dont nous avons déjà
‫parlé, parce que, par exemple, rechercher par ID et mettre à jour,
‫ou trouver, ou trouver par ID, tout cela va renvoyer des objets de requête.
‫Et donc, plus tard, quand nous allons implémenter
‫des choses comme le tri ou le filtrage, nous utiliserons ensuite cet objet de requête.
‫D'accord?
‫Donc, revenons en arrière, nous avons un peu déraillé ici en regardant la
‫documentation, mais, encore une fois, je pense qu'il
‫est vraiment important de commencer à
‫regarder la documentation, car un cours comme
‫celui-ci ne peut vous mener que jusqu'à présent, et je J'espère
‫que vous le savez déjà à ce stade, d'accord ?
‫Il est vraiment important que vous soyez également capable de trouver
‫des informations par vous-même, et je veux vous montrer
‫comment le faire également dans ce cours.
‫Quoi qu'il en soit, renvoyons également cette visite
‫récemment mise à jour au client, ce que nous ne
‫faisons pas pour le moment, car
‫nous avons simplement cette visite mise à jour ici.
‫Alors débarrassons-nous de cela et envoyons simplement en tournée.
‫Et rappelez-vous que ceci, en fait, est en fait cela.
‫Ainsi, la propriété tour est définie sur l'objet tour, mais, grâce à
‫ES6, nous n'avons plus à le faire lorsque le
‫nom de la propriété a le même nom que la valeur.
‫D'accord, alors débarrassons-nous de ça.
‫Cela rend notre code un peu meilleur.
‫D'accord, et testons-le maintenant.
‫De retour au facteur, nous avons ici l'itinéraire de la tournée mis à jour.
‫Et donc, faisons-le sur
‫ce même identifiant que nous avons utilisé auparavant.
‫Alors, celui-ci.
‫Ensuite, nous arrivons au corps, ici, et changeons--
‫Eh bien, qu'allons-nous changer ici ?
‫Eh bien, changeons le prix à, genre, 500.
‫Donc, prix, 500, envoyez-le, et en effet
‫cela nous donne l'objet nouvellement mis
‫à jour avec le prix
‫déjà fixé à 500.
‫Et si nous obtenons maintenant toutes les tournées, cela devrait
‫bien sûr être reflété ici.
‫Et voilà.
‫Mais maintenant, disons que nous le définissons sur une chaîne.
‫Voyons ce qui se passe alors.
‫Eh bien, nous obtenons en fait une erreur.
‫Et c'est parce que nous avons réexécuté les validateurs.
‫Alors, souviens-toi que nous avons-- Où
‫est-ce ?
‫Ah ouais, ici.
‫Nous spécifions donc ici que les validateurs doivent être réexécutés.
‫Et donc, en ce moment, le prix n'est plus un nombre comme
‫on s'y attend, non ?
‫Ainsi, dans un schéma, nous disons que le prix doit être
‫un nombre, mais, bien sûr, le script java,
‫ou la mangouste, en fait, ne peut pas, fondamentalement, convertir cette chaîne ici en nombre.
‫Mais c'est ce que nous attendons.
‫Donc, ici, il est dit que le genre devrait être le nombre.
‫Et donc, par conséquent, cela nous donne
‫une erreur, simplement parce que nous exécutons à nouveau les validateurs.
‫Alors, remettons-le à 500 et ensuite, bien sûr,
‫il reviendra.
‫Très bien, maintenant, gardez à l'esprit que nous sommes en
‫train de faire une demande de correctif ici.
‫Maintenant, si nous faisions une requête put, rappelez-vous, alors
‫vous vous attendriez à ce que l'objet d'origine
‫soit complètement remplacé
‫par le nouveau qui est envoyé, d'accord ?
‫Donc, dans ce cas, cela ne
‫fonctionnerait plus comme nous l'avons
‫implémenté ici, car celui-ci a simplement mis à jour
‫les champs qui sont différents ici dans le corps, d'accord ?
‫Mais de toute façon, je pense que la
‫méthode patch est en fait bien
‫plus utile, et donc, ce sera la seule à être implémentée ici.
‫Cool, nous avons donc implémenté trois de nos quatre opérations
‫correctes, il n'en reste plus qu'une, qui
‫va être supprimée.