Nous venons d'apprendre à propos de Callback Hell et
comment les promesses peuvent nous permettre de surmonter ce problème.
Nous savons que le pilote MongoDB de nœud prend en charge nativement les promesses.
Donc, si vous ne spécifiez pas de rappel,
les appels à leurs fonctions renverront des promesses.
Donc, nous allons mettre à jour notre application pour utiliser des promesses pour
éviter le problème de l'enfer de rappel que nous venons d'apprendre dans la conférence précédente.
Revenir à notre application, en
regardant encore une fois la raison pour laquelle l'enfer de rappel a développé dans notre code.
Notez qu'ici, lorsque nous avons implémenté les opérations,
nous avons une opération, puis à l'intérieur du rappel de cette opération,
nous devons lancer l'opération suivante et à
l'intérieur du rappel de cette opération, nous lançons l'opération suivante et ainsi de suite.
Donc, vous finissez avec cette pyramide comme structure ici.
Une opération à l'intérieur du rappel d'un autre et à l'intérieur du rappel.
Maintenant, ce code va bientôt devenir compliqué et compliqué à comprendre.
C' est pourquoi nous voulons transformer ce code en utilisant
le support de promesse que Mongo DB Driver nous fournit déjà
afin que nous puissions plutôt utiliser des promesses
plutôt que d'utiliser les fonctions de rappel comme nous l'avons fait dans cet exercice.
Bien sûr, j'ai fait la version précédente juste pour vous illustrer comment nous pouvons
atterrir avec l'enfer de rappel et comment nous pouvons utiliser les promesses pour surmonter ce problème.
Donc, avant de mettre à jour le fichier index.js,
laissez-moi entrer dans les operations.jsfile et ensuite nous allons mettre à jour ceci en premier.
Donc, ici, vous remarquerez que lorsque nous appelons cette fonction ici,
nous passons dans le deuxième paramètre qui est une fonction de rappel ici.
Donc, parce que nous allons utiliser des promesses ici.
Donc, je vais juste supprimer cette fonction de rappel et puis
puisque cet appel à l'insert retournera de toute façon des promesses,
je vais juste retourner la promesse de cette fonction.
Donc, notez comment le code a été simplifié.
De même pour le second,
je vais simplement supprimer cette fonction de rappel,
puis retourner la promesse qui est
retournée par ceci et ensuite nous allons gérer cela dans le code dans index.js.
De même pour le supprimer aussi,
je vais supprimer le rappel, puis retourner ce plantage et aussi pour uptade.
Pour la mise à jour, nous allons supprimer le rappel que nous avons donné
ici, puis retourner la promesse.
Donc, de cette façon, toutes ces quatre fonctions
vont retourner la promesse qui est déjà retournée
par ces appels aux fonctions du pilote MongoDB.
Maintenant, une fois que nous avons terminé cela,
revenons à index.js.
Dans index.js, je vais à nouveau mettre à jour cette fonction ici.
Donc, en utilisant des promesses dira MongoClient.connect (url) et ensuite
nous allons remplacer cela en disant « puis » et cela ne reçoit que la db comme paramètre.
Et à l'intérieur, nous allons gérer le reste et aussi nous pouvons
faire remarquer que cette fonction particulière ferme le « Puis » ici et la promesse,
la deuxième partie de la promesse,
nous pouvons gérer l'erreur.
On peut dire consolelog.
Donc, nous pouvons utiliser la capture de la promesse aussi pour attraper les erreurs.
De cette façon, nous avons attrapé les erreurs.
Maintenant, améliorons le code à l'intérieur ici.
Donc, à l'intérieur ici, nous faisons le document d'insertion
de l'opération DB, et au lieu d'appeler cette fonction ici,
ce que je vais faire est de transformer cela en le « puis » ici.
Donc, je vais fermer ceci et dire .then résultat.
Donc, à l'intérieur de ces résultats,
nous allons imprimer le journal de la console, puis.
Donc je vais fermer ceci ici et puis nous
fermerons le « puis » ici et puis
cela sera attaché à nouveau un « puis » ici.
Donc vous voyez que j'enchaîne deux « thens » l'
un dans l'autre ici et puis à l'intérieur de nous,
nous ferons un journal de console et ensuite nous ferons un retour de l'opération suivante.
Mais alors, pour cette opération,
je vais fermer ceci et fermer ceci
puis ce rappel à nouveau
sera maintenant géré dans une fonction « puis » ici.
Donc, notez comment vous avez la première fonction et dans le « puis » nous appelons
les documents de recherche dboper et cela reviendra et cela retournera une promesse.
Cette promesse sera traitée par ça alors.
Donc, nous enchaînons deux thens ensemble et puis enchaînons encore un « puis » ici.
Laissez-moi réinventer le code ici et puis nous allons retourner ceci ici et
cela va encore fermer et fermer ce « puis »
et puis cela devient enfermé dans le prochain « puis » et nous
appellerons la fonction suivante ici « que
DB.DropCollection ('Plats' et fermez « ceci puis » et le suivant ici.
Nous allons gérer le « puis » du résultat ici.
Retourne dbclose et tous
ces éléments ici peuvent maintenant être supprimés car ils ne sont plus nécessaires.
Et puis enfin s'il y a une erreur va attraper l'erreur cette fonction.
Donc, je vais juste copier ceci et puis le coller ici. C'est ça.
Avec ce changement maintenant,
votre code est beaucoup plus facile à gérer ici.
Donc, comme vous pouvez le voir,
vous avez le MongoClient.connect qui
renvoie une promesse et à l'intérieur de la gestion de cette promesse,
ils appellent ces méthodes et l'une après l'autre, ils
retournent chacun la promesse et ensuite vous les enchaînez en utilisant le.
Cette structure d'accords est beaucoup plus facile à suivre que ce que nous avions implémenté précédemment.
Donc, en utilisant des promesses, nous avons littéralement tourné autour et ensuite évité
l'enfer de rappel que nous avons vu dans la version précédente de cette application.
Donc, sauvegardons les modifications à la fois dans
index.jsn.operation.js, puis jetons un oeil à cette application.
Encore une fois aller au terminal,
à l'invite de type « npm
start » et vous verrez que votre application s'exécute exactement comme avant,
il insère le document, trouve le document,
met à jour le document, puis trouve
le document mis à jour, puis ferme la base de données de l'acte.
Donc, en utilisant des promesses, nous avons restructuré le code pour être beaucoup plus facile et
évité l'enfer de rappel que nous avons vu dans la version précédente de cette application.
Avec cela, nous complétons cet exercice.
Dans cet exercice, vous avez vu comment nous pouvons faire usage
des promesses pour éviter l'enfer de rappel.
C' est le bon moment pour vous de faire un commit git avec
le message callback hell and promise.