1
00:00:03,980 --> 00:00:08,700
Nous venons d'apprendre à propos de Callback Hell et

2
00:00:08,700 --> 00:00:13,455
comment les promesses peuvent nous permettre de surmonter ce problème.

3
00:00:13,455 --> 00:00:19,575
Nous savons que le pilote MongoDB de nœud prend en charge nativement les promesses.

4
00:00:19,575 --> 00:00:22,485
Donc, si vous ne spécifiez pas de rappel,

5
00:00:22,485 --> 00:00:26,385
les appels à leurs fonctions renverront des promesses.

6
00:00:26,385 --> 00:00:31,445
Donc, nous allons mettre à jour notre application pour utiliser des promesses pour

7
00:00:31,445 --> 00:00:38,005
éviter le problème de l'enfer de rappel que nous venons d'apprendre dans la conférence précédente.

8
00:00:38,005 --> 00:00:40,644
Revenir à notre application, en

9
00:00:40,644 --> 00:00:48,035
regardant encore une fois la raison pour laquelle l'enfer de rappel a développé dans notre code.

10
00:00:48,035 --> 00:00:52,520
Notez qu'ici, lorsque nous avons implémenté les opérations,

11
00:00:52,520 --> 00:00:56,899
nous avons une opération, puis à l'intérieur du rappel de cette opération,

12
00:00:56,899 --> 00:01:00,770
nous devons lancer l'opération suivante et à

13
00:01:00,770 --> 00:01:04,910
l'intérieur du rappel de cette opération, nous lançons l'opération suivante et ainsi de suite.

14
00:01:04,910 --> 00:01:10,040
Donc, vous finissez avec cette pyramide comme structure ici.

15
00:01:10,040 --> 00:01:14,290
Une opération à l'intérieur du rappel d'un autre et à l'intérieur du rappel.

16
00:01:14,290 --> 00:01:21,240
Maintenant, ce code va bientôt devenir compliqué et compliqué à comprendre.

17
00:01:21,240 --> 00:01:24,760
C' est pourquoi nous voulons transformer ce code en utilisant

18
00:01:24,760 --> 00:01:29,380
le support de promesse que Mongo DB Driver nous fournit déjà

19
00:01:29,380 --> 00:01:33,205
afin que nous puissions plutôt utiliser des promesses

20
00:01:33,205 --> 00:01:37,735
plutôt que d'utiliser les fonctions de rappel comme nous l'avons fait dans cet exercice.

21
00:01:37,735 --> 00:01:42,760
Bien sûr, j'ai fait la version précédente juste pour vous illustrer comment nous pouvons

22
00:01:42,760 --> 00:01:48,595
atterrir avec l'enfer de rappel et comment nous pouvons utiliser les promesses pour surmonter ce problème.

23
00:01:48,595 --> 00:01:53,560
Donc, avant de mettre à jour le fichier index.js,

24
00:01:53,560 --> 00:01:59,989
laissez-moi entrer dans les operations.jsfile et ensuite nous allons mettre à jour ceci en premier.

25
00:01:59,989 --> 00:02:06,950
Donc, ici, vous remarquerez que lorsque nous appelons cette fonction ici,

26
00:02:06,950 --> 00:02:14,630
nous passons dans le deuxième paramètre qui est une fonction de rappel ici.

27
00:02:14,630 --> 00:02:18,210
Donc, parce que nous allons utiliser des promesses ici.

28
00:02:18,210 --> 00:02:21,545
Donc, je vais juste supprimer cette fonction de rappel et puis

29
00:02:21,545 --> 00:02:25,744
puisque cet appel à l'insert retournera de toute façon des promesses,

30
00:02:25,744 --> 00:02:29,710
je vais juste retourner la promesse de cette fonction.

31
00:02:29,710 --> 00:02:33,605
Donc, notez comment le code a été simplifié.

32
00:02:33,605 --> 00:02:36,090
De même pour le second,

33
00:02:36,090 --> 00:02:42,740
je vais simplement supprimer cette fonction de rappel,

34
00:02:42,740 --> 00:02:47,900
puis retourner la promesse qui est

35
00:02:47,900 --> 00:02:55,580
retournée par ceci et ensuite nous allons gérer cela dans le code dans index.js.

36
00:02:55,580 --> 00:02:58,495
De même pour le supprimer aussi,

37
00:02:58,495 --> 00:03:08,280
je vais supprimer le rappel, puis retourner ce plantage et aussi pour uptade.

38
00:03:10,600 --> 00:03:16,730
Pour la mise à jour, nous allons supprimer le rappel que nous avons donné

39
00:03:16,730 --> 00:03:22,564
ici, puis retourner la promesse.

40
00:03:22,564 --> 00:03:25,100
Donc, de cette façon, toutes ces quatre fonctions

41
00:03:25,100 --> 00:03:27,575
vont retourner la promesse qui est déjà retournée

42
00:03:27,575 --> 00:03:33,110
par ces appels aux fonctions du pilote MongoDB.

43
00:03:33,110 --> 00:03:34,760
Maintenant, une fois que nous avons terminé cela,

44
00:03:34,760 --> 00:03:38,210
revenons à index.js.

45
00:03:38,210 --> 00:03:44,090
Dans index.js, je vais à nouveau mettre à jour cette fonction ici.

46
00:03:44,090 --> 00:03:53,105
Donc, en utilisant des promesses dira MongoClient.connect (url) et ensuite

47
00:03:53,105 --> 00:04:03,470
nous allons remplacer cela en disant « puis » et cela ne reçoit que la db comme paramètre.

48
00:04:03,470 --> 00:04:10,390
Et à l'intérieur, nous allons gérer le reste et aussi nous pouvons

49
00:04:10,390 --> 00:04:18,350
faire remarquer que cette fonction particulière ferme le « Puis » ici et la promesse,

50
00:04:18,350 --> 00:04:20,505
la deuxième partie de la promesse,

51
00:04:20,505 --> 00:04:22,845
nous pouvons gérer l'erreur.

52
00:04:22,845 --> 00:04:28,055
On peut dire consolelog.

53
00:04:28,055 --> 00:04:33,755
Donc, nous pouvons utiliser la capture de la promesse aussi pour attraper les erreurs.

54
00:04:33,755 --> 00:04:36,275
De cette façon, nous avons attrapé les erreurs.

55
00:04:36,275 --> 00:04:39,815
Maintenant, améliorons le code à l'intérieur ici.

56
00:04:39,815 --> 00:04:45,530
Donc, à l'intérieur ici, nous faisons le document d'insertion

57
00:04:45,530 --> 00:04:49,685
de l'opération DB, et au lieu d'appeler cette fonction ici,

58
00:04:49,685 --> 00:04:59,115
ce que je vais faire est de transformer cela en le « puis » ici.

59
00:04:59,115 --> 00:05:06,870
Donc, je vais fermer ceci et dire .then résultat.

60
00:05:06,870 --> 00:05:08,800
Donc, à l'intérieur de ces résultats,

61
00:05:08,800 --> 00:05:11,600
nous allons imprimer le journal de la console, puis.

62
00:05:11,600 --> 00:05:20,630
Donc je vais fermer ceci ici et puis nous

63
00:05:20,630 --> 00:05:25,505
fermerons le « puis » ici et puis

64
00:05:25,505 --> 00:05:31,950
cela sera attaché à nouveau un « puis » ici.

65
00:05:32,600 --> 00:05:36,640
Donc vous voyez que j'enchaîne deux « thens » l'

66
00:05:36,640 --> 00:05:40,070
un dans l'autre ici et puis à l'intérieur de nous,

67
00:05:40,070 --> 00:05:47,570
nous ferons un journal de console et ensuite nous ferons un retour de l'opération suivante.

68
00:05:47,570 --> 00:05:51,390
Mais alors, pour cette opération,

69
00:05:52,540 --> 00:06:02,070
je vais fermer ceci et fermer ceci

70
00:06:02,070 --> 00:06:06,920
puis ce rappel à nouveau

71
00:06:06,920 --> 00:06:13,320
sera maintenant géré dans une fonction « puis » ici.

72
00:06:13,460 --> 00:06:20,510
Donc, notez comment vous avez la première fonction et dans le « puis » nous appelons

73
00:06:20,510 --> 00:06:27,870
les documents de recherche dboper et cela reviendra et cela retournera une promesse.

74
00:06:27,870 --> 00:06:30,410
Cette promesse sera traitée par ça alors.

75
00:06:30,410 --> 00:06:35,720
Donc, nous enchaînons deux thens ensemble et puis enchaînons encore un « puis » ici.

76
00:06:35,720 --> 00:06:47,005
Laissez-moi réinventer le code ici et puis nous allons retourner ceci ici et

77
00:06:47,005 --> 00:06:57,610
cela va encore fermer et fermer ce « puis »

78
00:06:57,610 --> 00:07:07,850
et puis cela devient enfermé dans le prochain « puis » et nous

79
00:07:07,850 --> 00:07:13,280
appellerons la fonction suivante ici « que

80
00:07:13,280 --> 00:07:21,130
DB.DropCollection ('Plats' et fermez « ceci puis » et le suivant ici.

81
00:07:26,660 --> 00:07:31,390
Nous allons gérer le « puis » du résultat ici.

82
00:07:39,650 --> 00:07:48,690
Retourne dbclose et tous

83
00:07:48,690 --> 00:07:56,785
ces éléments ici peuvent maintenant être supprimés car ils ne sont plus nécessaires.

84
00:07:56,785 --> 00:08:04,520
Et puis enfin s'il y a une erreur va attraper l'erreur cette fonction.

85
00:08:04,520 --> 00:08:12,930
Donc, je vais juste copier ceci et puis le coller ici. C'est ça.

86
00:08:12,930 --> 00:08:14,755
Avec ce changement maintenant,

87
00:08:14,755 --> 00:08:20,220
votre code est beaucoup plus facile à gérer ici.

88
00:08:20,220 --> 00:08:21,510
Donc, comme vous pouvez le voir,

89
00:08:21,510 --> 00:08:24,560
vous avez le MongoClient.connect qui

90
00:08:24,560 --> 00:08:28,040
renvoie une promesse et à l'intérieur de la gestion de cette promesse,

91
00:08:28,040 --> 00:08:31,700
ils appellent ces méthodes et l'une après l'autre, ils

92
00:08:31,700 --> 00:08:35,490
retournent chacun la promesse et ensuite vous les enchaînez en utilisant le.

93
00:08:35,490 --> 00:08:41,635
Cette structure d'accords est beaucoup plus facile à suivre que ce que nous avions implémenté précédemment.

94
00:08:41,635 --> 00:08:46,280
Donc, en utilisant des promesses, nous avons littéralement tourné autour et ensuite évité

95
00:08:46,280 --> 00:08:51,250
l'enfer de rappel que nous avons vu dans la version précédente de cette application.

96
00:08:51,250 --> 00:08:53,590
Donc, sauvegardons les modifications à la fois dans

97
00:08:53,590 --> 00:08:58,715
index.jsn.operation.js, puis jetons un oeil à cette application.

98
00:08:58,715 --> 00:09:00,840
Encore une fois aller au terminal,

99
00:09:00,840 --> 00:09:03,105
à l'invite de type « npm

100
00:09:03,105 --> 00:09:09,515
start » et vous verrez que votre application s'exécute exactement comme avant,

101
00:09:09,515 --> 00:09:12,200
il insère le document, trouve le document,

102
00:09:12,200 --> 00:09:15,080
met à jour le document, puis trouve

103
00:09:15,080 --> 00:09:18,530
le document mis à jour, puis ferme la base de données de l'acte.

104
00:09:18,530 --> 00:09:23,630
Donc, en utilisant des promesses, nous avons restructuré le code pour être beaucoup plus facile et

105
00:09:23,630 --> 00:09:29,945
évité l'enfer de rappel que nous avons vu dans la version précédente de cette application.

106
00:09:29,945 --> 00:09:33,705
Avec cela, nous complétons cet exercice.

107
00:09:33,705 --> 00:09:36,470
Dans cet exercice, vous avez vu comment nous pouvons faire usage

108
00:09:36,470 --> 00:09:39,590
des promesses pour éviter l'enfer de rappel.

109
00:09:39,590 --> 00:09:42,920
C' est le bon moment pour vous de faire un commit git avec

110
00:09:42,920 --> 00:09:47,950
le message callback hell and promise.