﻿1
00:00:01,210 --> 00:00:04,370
‫Instructeur : Dans cette conférence, implémentons un meilleur

2
00:00:04,370 --> 00:00:07,853
‫moyen de détecter les erreurs dans toutes nos fonctions asynchrones.

3
00:00:09,310 --> 00:00:12,180
‫Alors maintenant, dans toutes nos fonctions asynchrones,

4
00:00:12,180 --> 00:00:15,750
‫nous avons ces blocs try catch, n'est-ce pas ?

5
00:00:15,750 --> 00:00:20,430
‫Alors, rappelez-vous comment nous avons ajouté à toutes ces fonctions de gestion

6
00:00:20,430 --> 00:00:23,930
‫cet essai, puis ce bloc catch, d'accord ?

7
00:00:23,930 --> 00:00:26,430
‫Et donc toutes ont ceci parce que

8
00:00:26,430 --> 00:00:28,900
‫toutes sont des fonctions asynchrones et c'est

9
00:00:28,900 --> 00:00:31,930
‫ainsi que nous attrapons généralement les erreurs à

10
00:00:31,930 --> 00:00:33,863
‫l'intérieur d'une fonction asynchrone.

11
00:00:34,800 --> 00:00:37,100
‫Donc, en utilisant un bloc try catch.

12
00:00:37,100 --> 00:00:41,170
‫Maintenant, cela donne vraiment à notre code un aspect désordonné et flou,

13
00:00:41,170 --> 00:00:44,740
‫donc le but de cette méthode createTour ici, par exemple,

14
00:00:44,740 --> 00:00:46,560
‫est simplement d'exécuter ce code.

15
00:00:46,560 --> 00:00:48,500
‫En fait, nous ne voulons

16
00:00:48,500 --> 00:00:49,934
‫pas gâcher la

17
00:00:49,934 --> 00:00:53,450
‫gestion des erreurs ici, donc en ce moment nous avons

18
00:00:53,450 --> 00:00:55,690
‫ces deux blocs supplémentaires, essayez et attrapez,

19
00:00:55,690 --> 00:00:57,900
‫et avec cela vient cette indentation

20
00:00:57,900 --> 00:01:01,730
‫supplémentaire ici et encore, cela rend vraiment notre code pas propre.

21
00:01:01,730 --> 00:01:03,550
‫Ce n'est vraiment pas concentré.

22
00:01:03,550 --> 00:01:05,940
‫De plus, nous avons beaucoup de code en

23
00:01:05,940 --> 00:01:07,830
‫double ici car dans chacun de

24
00:01:07,830 --> 00:01:10,310
‫ces gestionnaires, nous avons un bloc catch assez similaire.

25
00:01:10,310 --> 00:01:12,250
‫Donc, dans tout cela, tout ce

26
00:01:12,250 --> 00:01:14,690
‫que nous faisons est vraiment d'envoyer cette réponse.

27
00:01:14,690 --> 00:01:17,490
‫Et cette réponse ne serait même pas envoyée

28
00:01:17,490 --> 00:01:20,900
‫ici, mais plutôt dans notre middleware global de gestion des erreurs,

29
00:01:20,900 --> 00:01:23,010
‫rappelez-vous, mais c'est un autre sujet.

30
00:01:23,010 --> 00:01:24,910
‫Pour l'instant, ce que j'essaie

31
00:01:24,910 --> 00:01:27,170
‫de me concentrer ici, c'est que ces blocs

32
00:01:27,170 --> 00:01:30,840
‫try catch à l'intérieur de chacune de nos fonctions asynchrones ne sont

33
00:01:30,840 --> 00:01:34,010
‫pas idéaux et essayons donc maintenant de résoudre ce problème.

34
00:01:34,010 --> 00:01:37,100
‫Et la solution consiste essentiellement à retirer le bloc try

35
00:01:37,100 --> 00:01:39,890
‫catch d'ici et à le placer à un niveau

36
00:01:39,890 --> 00:01:41,450
‫supérieur dans une autre fonction.

37
00:01:41,450 --> 00:01:43,000
‫Donc, en gros, ce

38
00:01:43,000 --> 00:01:44,470
‫que nous allons

39
00:01:44,470 --> 00:01:49,326
‫faire, c'est créer une fonction, puis envelopper cette fonction asynchrone dans cette fonction.

40
00:01:49,326 --> 00:01:50,630
‫D'accord?

41
00:01:50,630 --> 00:01:53,333
‫Et permettez-moi donc d'appeler celui-ci catchAsync.

42
00:01:56,960 --> 00:02:00,290
‫Donc catchAsync, et je l'appelle de cette façon

43
00:02:00,290 --> 00:02:02,380
‫car le but de

44
00:02:02,380 --> 00:02:05,410
‫cette fonction est simplement d'attraper nos erreurs asynchrones.

45
00:02:05,410 --> 00:02:06,613
‫Si simple, non ?

46
00:02:07,500 --> 00:02:09,840
‫Donc, dans cette fonction

47
00:02:09,840 --> 00:02:13,660
‫catchAsync, nous allons passer une fonction, d'accord ?

48
00:02:13,660 --> 00:02:16,820
‫Et rappelez-vous, la fonction que nous allons

49
00:02:16,820 --> 00:02:19,030
‫transmettre est essentiellement celle-ci.

50
00:02:19,030 --> 00:02:21,678
‫Alors maintenant que nous travaillons avec cet

51
00:02:21,678 --> 00:02:25,420
‫exemple, la fonction que nous allons passer dans le catchAsync est

52
00:02:25,420 --> 00:02:27,840
‫cette fonction car c'est là que nous

53
00:02:27,840 --> 00:02:30,033
‫voulons intercepter les erreurs asynchrones.

54
00:02:31,030 --> 00:02:32,563
‫Alors faisons-le en fait.

55
00:02:34,090 --> 00:02:39,090
‫Donc fn, puis enveloppez toute cette fonction là-dedans.

56
00:02:40,950 --> 00:02:43,340
‫Donc, ensuite, ce que nous devons faire

57
00:02:43,340 --> 00:02:45,440
‫est d'appeler cette fonction ici.

58
00:02:46,670 --> 00:02:49,640
‫Appelez-la donc, et cette fonction devrait recevoir

59
00:02:49,640 --> 00:02:53,810
‫une demande, une réponse et, en fait, également la suivante.

60
00:02:53,810 --> 00:02:57,440
‫Donc, celui-ci ici devrait également avoir next et tous les autres,

61
00:02:57,440 --> 00:02:58,860
‫car rappelez-vous, nous

62
00:02:58,860 --> 00:03:01,260
‫avons besoin de la fonction next afin

63
00:03:01,260 --> 00:03:03,540
‫de lui transmettre l'erreur afin que

64
00:03:03,540 --> 00:03:05,660
‫cette erreur puisse ensuite être gérée

65
00:03:05,660 --> 00:03:08,470
‫dans le middleware global de gestion des erreurs.

66
00:03:08,470 --> 00:03:10,360
‫Donc, toutes ces fonctions vont avoir besoin

67
00:03:10,360 --> 00:03:12,063
‫d'une requête, d'une réponse et ensuite.

68
00:03:12,950 --> 00:03:14,540
‫Mais laissons cela pour plus tard.

69
00:03:14,540 --> 00:03:17,090
‫Pour l'instant, concentrons-nous vraiment sur notre catchAsync ici.

70
00:03:19,180 --> 00:03:22,120
‫Donc cette fonction ici que nous avons passée à

71
00:03:22,120 --> 00:03:24,290
‫async, qui est maintenant appelée fn ici,

72
00:03:24,290 --> 00:03:26,040
‫est une fonction asynchrone.

73
00:03:26,040 --> 00:03:28,080
‫Et rappelez-vous que les fonctions

74
00:03:28,080 --> 00:03:30,490
‫asynchrones renvoient des promesses, n'est-ce pas ?

75
00:03:30,490 --> 00:03:33,500
‫Et lorsqu'il y a une erreur dans

76
00:03:33,500 --> 00:03:37,310
‫une fonction asynchrone, cela signifie essentiellement que la promesse est rejetée.

77
00:03:37,310 --> 00:03:40,160
‫Et donc ici, là où nous appelons réellement cette fonction,

78
00:03:40,160 --> 00:03:41,893
‫nous pouvons alors détecter cette erreur.

79
00:03:43,790 --> 00:03:46,040
‫Nous l'attrapons donc ici, au lieu

80
00:03:46,040 --> 00:03:48,590
‫de l'attraper dans le bloc try catch.

81
00:03:48,590 --> 00:03:53,590
‫Donc catch, et error, puis ensuite, et transmettez l'erreur.

82
00:03:57,040 --> 00:03:58,160
‫Et nous

83
00:03:58,160 --> 00:04:01,810
‫pouvons simplifier cela, mais pour l'instant, supprimons le bloc try

84
00:04:01,810 --> 00:04:05,103
‫catch ici, et concentrons-nous donc simplement sur cette pièce.

85
00:04:07,580 --> 00:04:08,920
‫C'est donc tout

86
00:04:08,920 --> 00:04:12,110
‫ce que nous voulons et nous n'avons plus besoin du

87
00:04:12,110 --> 00:04:15,660
‫bloc try catch, encore une fois, car ce catch est maintenant essentiellement

88
00:04:15,660 --> 00:04:17,113
‫transféré ici, sur cette ligne.

89
00:04:18,500 --> 00:04:20,350
‫Ce n'est plus un bloc

90
00:04:20,350 --> 00:04:22,560
‫catch, car ici, il est simplement

91
00:04:22,560 --> 00:04:26,060
‫plus facile d'utiliser la promesse renvoyée par la fonction fn.

92
00:04:26,060 --> 00:04:29,640
‫Encore une fois, cette fonction fn est cette fonction, donc celle

93
00:04:29,640 --> 00:04:32,270
‫que nous avons transmise à catchAsync, et

94
00:04:32,270 --> 00:04:34,650
‫qui va donc renvoyer une promesse.

95
00:04:34,650 --> 00:04:37,100
‫Et en fait, j'ai remarqué ici

96
00:04:37,100 --> 00:04:40,110
‫que cela, bien sûr, devrait s'appeler catchAsync, d'accord ?

97
00:04:40,110 --> 00:04:41,800
‫Et puis donc cette fonction

98
00:04:41,800 --> 00:04:45,447
‫que nous avons passée à catchAsync, celle-ci est bien sûr alors fn.

99
00:04:45,447 --> 00:04:46,280
‫D'accord?

100
00:04:46,280 --> 00:04:48,980
‫Donc l'argument que nous avons fait passer là-dedans.

101
00:04:48,980 --> 00:04:51,590
‫Maintenant, il y a en fait deux gros problèmes avec la

102
00:04:51,590 --> 00:04:54,180
‫façon dont cela est mis en œuvre en ce

103
00:04:54,180 --> 00:04:57,240
‫moment et donc de cette façon, cela ne fonctionnerait pas vraiment du tout.

104
00:04:57,240 --> 00:04:59,340
‫Donc, tout d'abord, cet appel de

105
00:04:59,340 --> 00:05:03,213
‫fonction ici n'a aucun moyen de connaître la demande, la réponse et ensuite.

106
00:05:04,300 --> 00:05:07,460
‫Nous ne les avons pas transmis à catchAsync ici, et il

107
00:05:07,460 --> 00:05:09,300
‫n'y a donc vraiment aucun

108
00:05:09,300 --> 00:05:12,693
‫moyen pour la fonction de connaître les valeurs de ces paramètres.

109
00:05:13,658 --> 00:05:15,610
‫Et deuxièmement, ici, nous

110
00:05:15,610 --> 00:05:18,473
‫appelons en fait la fonction asynchrone.

111
00:05:20,290 --> 00:05:22,290
‫Et pour voir cela un peu mieux, débarrassons-nous

112
00:05:23,200 --> 00:05:24,873
‫simplement complètement de ce code.

113
00:05:26,370 --> 00:05:29,520
‫Nous avons donc ici catchAsync et nous l'appelons ensuite en

114
00:05:29,520 --> 00:05:31,153
‫utilisant les parenthèses bien sûr.

115
00:05:32,350 --> 00:05:34,900
‫Et puis, à l'intérieur de catchAsync, nous appelons également

116
00:05:34,900 --> 00:05:37,760
‫tout de suite la fonction fn, et ce n'est pas

117
00:05:37,760 --> 00:05:40,130
‫comme cela que cela est censé fonctionner.

118
00:05:40,130 --> 00:05:43,060
‫Donc, createTour ici devrait vraiment être une fonction mais

119
00:05:43,060 --> 00:05:45,840
‫pas le résultat de l'appel d'une fonction.

120
00:05:45,840 --> 00:05:47,810
‫Mais c'est en ce moment ce qui se passe.

121
00:05:47,810 --> 00:05:49,940
‫Donc en ce moment

122
00:05:49,940 --> 00:05:54,310
‫catchAsync est appelé, qui appelle ensuite cette fonction ici, d'accord ?

123
00:05:54,310 --> 00:05:56,890
‫Et encore une fois, cette fonction ne doit pas

124
00:05:56,890 --> 00:05:59,360
‫être appelée, mais à la place, elle doit

125
00:05:59,360 --> 00:06:01,460
‫rester ici et attendre qu'express l'appelle.

126
00:06:01,460 --> 00:06:03,310
‫Et express l'appellera bien

127
00:06:03,310 --> 00:06:05,400
‫sûr dès que quelqu'un emprunte la

128
00:06:05,400 --> 00:06:08,390
‫route qui a besoin de cette fonction de contrôle.

129
00:06:08,390 --> 00:06:11,980
‫Et donc la solution à cela est de faire en sorte

130
00:06:11,980 --> 00:06:15,030
‫que la fonction catchAsync renvoie une autre fonction qui

131
00:06:15,030 --> 00:06:18,060
‫sera ensuite affectée à createTour et que cette

132
00:06:18,060 --> 00:06:19,640
‫fonction puisse ensuite être

133
00:06:19,640 --> 00:06:21,483
‫appelée plus tard si nécessaire.

134
00:06:23,294 --> 00:06:24,394
‫Alors faisons-le ici.

135
00:06:25,590 --> 00:06:28,480
‫Renvoyons donc une fonction anonyme et

136
00:06:28,480 --> 00:06:30,890
‫rappelons-nous que c'est la fonction

137
00:06:30,890 --> 00:06:32,900
‫qu'express va ensuite appeler.

138
00:06:32,900 --> 00:06:35,380
‫Et c'est donc ici que nous

139
00:06:35,380 --> 00:06:38,423
‫spécifions ensuite la demande, la réponse et ensuite.

140
00:06:41,120 --> 00:06:43,763
‫Il manque en fait la flèche ici.

141
00:06:47,230 --> 00:06:48,480
‫Et bien.

142
00:06:48,480 --> 00:06:49,890
‫Et c'est en fait ça.

143
00:06:49,890 --> 00:06:52,420
‫C'est notre fonction catchAsync.

144
00:06:52,420 --> 00:06:54,610
‫Rappelez-vous juste comment j'ai dit que

145
00:06:54,610 --> 00:06:56,840
‫nous pouvions le simplifier et c'est juste

146
00:06:56,840 --> 00:06:59,110
‫parce que, en JavaScript, nous pouvons le simplifier

147
00:06:59,110 --> 00:07:01,777
‫comme ça donc tout ce que nous devons passer

148
00:07:01,777 --> 00:07:04,020
‫ici est la fonction, et elle sera

149
00:07:04,020 --> 00:07:06,810
‫ensuite appelée automatiquement avec le paramètre que ce rappel reçoit.

150
00:07:06,810 --> 00:07:09,263
‫C'est donc la même chose que d'écrire ensuite.

151
00:07:11,500 --> 00:07:13,290
‫Récapitulons donc ici.

152
00:07:13,290 --> 00:07:16,490
‫Ainsi, afin de nous débarrasser de nos blocs try

153
00:07:16,490 --> 00:07:19,230
‫catch, nous avons simplement encapsulé notre

154
00:07:19,230 --> 00:07:23,010
‫fonction asynchrone dans la fonction catchAsync que nous venons de créer.

155
00:07:23,010 --> 00:07:26,160
‫Cette fonction renverra alors une nouvelle fonction

156
00:07:26,160 --> 00:07:27,690
‫anonyme, qui

157
00:07:27,690 --> 00:07:31,660
‫est celle-ci ici, qui sera alors affectée à createTour.

158
00:07:31,660 --> 00:07:34,200
‫Et donc fondamentalement, c'est cette fonction

159
00:07:34,200 --> 00:07:36,940
‫ici qui sera appelée dès qu'un nouveau

160
00:07:36,940 --> 00:07:40,010
‫tour doit être créé à l'aide du gestionnaire createTour.

161
00:07:40,010 --> 00:07:42,960
‫Et c'est pourquoi elle a exactement la

162
00:07:42,960 --> 00:07:47,520
‫même signature ici que cette fonction asynchrone, avec requête, réponse et suivant.

163
00:07:47,520 --> 00:07:49,740
‫Maintenant, ce que cette fonction ici fera

164
00:07:49,740 --> 00:07:51,320
‫alors, c'est qu'elle appellera la

165
00:07:51,320 --> 00:07:53,440
‫fonction que nous avons transmise initialement,

166
00:07:53,440 --> 00:07:54,990
‫donc celle-ci ici,

167
00:07:54,990 --> 00:07:58,270
‫et elle exécutera ensuite tout le code qui s'y trouve.

168
00:07:58,270 --> 00:08:00,670
‫Maintenant, puisqu'il s'agit d'une fonction asynchrone

169
00:08:00,670 --> 00:08:02,380
‫ici, elle renverra une

170
00:08:02,380 --> 00:08:05,610
‫promesse et donc, en cas d'erreur dans cette promesse

171
00:08:05,610 --> 00:08:08,400
‫ou en d'autres termes, en cas de rejet,

172
00:08:08,400 --> 00:08:11,090
‫nous pouvons alors détecter l'erreur qui s'est produite

173
00:08:11,090 --> 00:08:15,193
‫en utilisant la méthode catch qui est disponible sur toutes les promesses.

174
00:08:16,560 --> 00:08:19,510
‫Et au final, c'est cette méthode catch ici qui

175
00:08:19,510 --> 00:08:22,670
‫va transmettre l'erreur à la fonction suivante qui fera ensuite

176
00:08:22,670 --> 00:08:24,780
‫en sorte que notre erreur

177
00:08:24,780 --> 00:08:27,943
‫se retrouve dans notre middleware global de gestion des erreurs.

178
00:08:28,890 --> 00:08:31,020
‫C'est donc ici, cette ligne de

179
00:08:31,020 --> 00:08:33,510
‫code, que toute la magie opère, et c'est

180
00:08:33,510 --> 00:08:35,440
‫en fait ce qui nous

181
00:08:35,440 --> 00:08:38,893
‫permet de nous débarrasser du bloc catch que nous avions auparavant.

182
00:08:39,770 --> 00:08:40,603
‫Et une

183
00:08:40,603 --> 00:08:43,710
‫remarque: c'est assez compliqué à comprendre et au cas où

184
00:08:43,710 --> 00:08:46,460
‫ce n'est pas clair à 100%, ne vous inquiétez

185
00:08:46,460 --> 00:08:48,943
‫pas, ce n'est pas si important que ça.

186
00:08:49,792 --> 00:08:53,010
‫Il s'agit vraiment de déterminer comment fonctionne

187
00:08:53,010 --> 00:08:56,460
‫exactement le code asynchrone dans les coulisses de JavaScript.

188
00:08:56,460 --> 00:09:00,100
‫Il ne s'agit donc pas vraiment d'express ou de Node. js, il

189
00:09:00,100 --> 00:09:04,060
‫s'agit davantage du fonctionnement du code asynchrone.

190
00:09:04,060 --> 00:09:06,560
‫Quoi qu'il en soit, si nous créons maintenant

191
00:09:06,560 --> 00:09:08,040
‫un nouveau tour

192
00:09:08,040 --> 00:09:10,440
‫et qu'une erreur se produit, par exemple,

193
00:09:10,440 --> 00:09:13,450
‫à partir d'une entrée invalide, alors cette erreur devrait

194
00:09:13,450 --> 00:09:15,120
‫bien sûr être interceptée ici

195
00:09:15,120 --> 00:09:18,270
‫dans cette fonction catch, et sera ensuite propagée à notre

196
00:09:18,270 --> 00:09:21,870
‫middleware de gestion des erreurs et de sorte que on renverra

197
00:09:21,870 --> 00:09:24,570
‫ensuite la réponse d'erreur que nous sommes censés recevoir.

198
00:09:24,570 --> 00:09:26,973
‫Et donc, essayons maintenant.

199
00:09:28,080 --> 00:09:30,500
‫Alors créez une nouvelle tournée.

200
00:09:30,500 --> 00:09:32,030
‫Ici, nous avons le

201
00:09:32,030 --> 00:09:35,223
‫corps, et débarrassons-nous maintenant d'un de ces champs obligatoires.

202
00:09:36,440 --> 00:09:37,273
‫D'accord.

203
00:09:37,273 --> 00:09:40,223
‫Et donc cela devrait déclencher une erreur, et voyons donc.

204
00:09:41,220 --> 00:09:44,920
‫Et en effet, notre validation de tournée a échoué, ce

205
00:09:44,920 --> 00:09:46,910
‫qui est exactement le message

206
00:09:46,910 --> 00:09:49,090
‫d'erreur que nous étions censés recevoir.

207
00:09:49,090 --> 00:09:53,220
‫Maintenant, ici, vous voyez cette erreur de serveur interne 500, qui est

208
00:09:53,220 --> 00:09:55,710
‫simplement due au fait qu'à l'heure actuelle,

209
00:09:55,710 --> 00:09:57,500
‫l'erreur qui s'est propagée au

210
00:09:57,500 --> 00:09:59,280
‫middleware de gestion

211
00:09:59,280 --> 00:10:02,110
‫des erreurs n'avait aucun code d'état spécifié et

212
00:10:02,110 --> 00:10:05,190
‫rappelez-vous donc que notre valeur par défaut est 500

213
00:10:05,190 --> 00:10:08,310
‫et c'est donc celui-ci qui a ensuite été renvoyé.

214
00:10:08,310 --> 00:10:10,060
‫Et bien sûr, nous devons corriger

215
00:10:10,060 --> 00:10:13,173
‫cela et nous le ferons dans une conférence ultérieure de ce cours.

216
00:10:14,730 --> 00:10:17,030
‫Pour l'instant, ce qui compte

217
00:10:17,030 --> 00:10:20,420
‫ici, c'est que premièrement, notre fonction catchAsync fonctionne comme prévu,

218
00:10:20,420 --> 00:10:23,700
‫et deuxièmement, que l'erreur s'est réellement propagée, elle a

219
00:10:23,700 --> 00:10:26,900
‫donc été détectée par notre middleware global de gestion

220
00:10:26,900 --> 00:10:30,223
‫des erreurs qui a ensuite renvoyé cette réponse au client.

221
00:10:32,520 --> 00:10:35,360
‫Maintenant, allons de l'avant et exportons cette

222
00:10:35,360 --> 00:10:38,010
‫fonction catch dans son propre fichier.

223
00:10:38,010 --> 00:10:39,950
‫Je le récupère donc d'ici et

224
00:10:39,950 --> 00:10:42,200
‫je vais créer juste un autre fichier

225
00:10:42,200 --> 00:10:43,843
‫dans notre dossier utilitaires.

226
00:10:47,060 --> 00:10:51,123
‫Donc catchAsync. js.

227
00:10:55,470 --> 00:11:00,470
‫Et jusqu'ici, module. les exportations devraient être juste cela.

228
00:11:04,650 --> 00:11:09,450
‫Et donc ça devrait très bien fonctionner.

229
00:11:09,450 --> 00:11:11,340
‫De retour dans notre contrôleur de tournée,

230
00:11:11,340 --> 00:11:13,373
‫nous devons bien sûr maintenant importer cette fonction.

231
00:11:18,970 --> 00:11:21,840
‫Et comme d'habitude, nous devons remonter

232
00:11:22,840 --> 00:11:25,690
‫d'un dossier, puis dans notre dossier

233
00:11:25,690 --> 00:11:27,733
‫utilitaires, puis catchAsync.

234
00:11:30,810 --> 00:11:32,840
‫Très bien, et maintenant tout

235
00:11:32,840 --> 00:11:36,080
‫ce que nous avons à faire est de nous débarrasser

236
00:11:36,080 --> 00:11:40,593
‫de tous ces blocs catch et d'encapsuler tous les gestionnaires dans le catchAsync.

237
00:11:42,210 --> 00:11:43,793
‫Alors faisons-le.

238
00:11:47,610 --> 00:11:52,610
‫Faites d'abord l'emballage, puis débarrassez-vous de ces blocs.

239
00:11:57,030 --> 00:12:00,220
‫Faites une sauvegarde pour reformater, et c'est parti.

240
00:12:00,220 --> 00:12:03,310
‫Et maintenant, il s'agit simplement de répéter cela

241
00:12:03,310 --> 00:12:06,821
‫jusqu'à ce que toutes les tournées, ou, désolé, jusqu'à

242
00:12:06,821 --> 00:12:09,633
‫ce que tous les gestionnaires aient terminé.

243
00:12:13,070 --> 00:12:14,760
‫OK, sauvegarde rapide.

244
00:12:14,760 --> 00:12:16,740
‫Celui-ci est déjà fait.

245
00:12:16,740 --> 00:12:18,763
‫La prochaine étape est la mise à jour.

246
00:12:26,920 --> 00:12:28,483
‫Et il n'en manque plus qu'un.

247
00:12:36,380 --> 00:12:37,870
‫Ou en fait, ce n'est pas vrai.

248
00:12:37,870 --> 00:12:40,403
‫Là-bas, nous avons encore plus de fonctions asynchrones.

249
00:12:52,530 --> 00:12:57,203
‫Nous allons donc nous débarrasser de la capture et de l'essai ici.

250
00:12:59,150 --> 00:13:01,100
‫Et je crois que celui-ci est le dernier.

251
00:13:04,020 --> 00:13:05,483
‫Et oui, c'est vrai.

252
00:13:12,390 --> 00:13:15,000
‫Très bien, maintenant une autre chose que

253
00:13:15,000 --> 00:13:19,040
‫nous devons faire est en fait d'ajouter à côté d'eux tous ici également.

254
00:13:19,040 --> 00:13:20,793
‫Mais bien sûr, pas en majuscule.

255
00:13:21,690 --> 00:13:22,960
‫D'accord.

256
00:13:22,960 --> 00:13:25,480
‫Et permettez-moi en fait de les sélectionner tous ici

257
00:13:28,170 --> 00:13:30,683
‫afin que je n'aie qu'à l'écrire une fois.

258
00:13:33,140 --> 00:13:35,943
‫Et donc cela l'a ajouté à tous.

259
00:13:38,390 --> 00:13:42,063
‫Et maintenant, je suppose que nous en avons fini avec cette partie.

260
00:13:43,270 --> 00:13:46,310
‫Testons-le à nouveau très rapidement, pas avec celui-ci,

261
00:13:46,310 --> 00:13:48,733
‫mais ici avec, pas avec celui-ci

262
00:13:49,950 --> 00:13:52,000
‫aussi, donc c'est fini.

263
00:13:55,330 --> 00:13:57,140
‫Et je vais essayer d'avoir

264
00:13:57,140 --> 00:14:01,870
‫une tournée mais avec une pièce d'identité invalide, alors voyons ce qui se passe ici.

265
00:14:01,870 --> 00:14:04,250
‫Et en effet, nous obtenons notre message

266
00:14:04,250 --> 00:14:06,950
‫d'erreur et à nouveau avec le code d'état 500,

267
00:14:06,950 --> 00:14:08,640
‫ce qui n'est pas correct,

268
00:14:08,640 --> 00:14:10,050
‫rappelez-vous, mais nous

269
00:14:10,050 --> 00:14:11,930
‫allons nous en occuper plus tard.

270
00:14:11,930 --> 00:14:15,130
‫Alors maintenant, laissez-moi vous montrer que c'est ici

271
00:14:15,130 --> 00:14:19,920
‫que vient le 500 car pour le moment il n'y a pas de

272
00:14:19,920 --> 00:14:22,200
‫code d'état à l'intérieur de l'erreur

273
00:14:22,200 --> 00:14:24,310
‫que nous obtenons parce que

274
00:14:24,310 --> 00:14:27,940
‫ces erreurs, elles viennent en fait de Mongoose et donc

275
00:14:27,940 --> 00:14:29,730
‫nous n'avons aucun moyen

276
00:14:29,730 --> 00:14:32,390
‫d'ajouter un statut code à ces erreurs.

277
00:14:32,390 --> 00:14:35,370
‫Ou en fait, bien sûr, nous pourrions le faire, mais

278
00:14:35,370 --> 00:14:37,950
‫ce serait encore plus déroutant et nous allons

279
00:14:37,950 --> 00:14:40,330
‫donc trouver un autre moyen plus tard

280
00:14:40,330 --> 00:14:41,443
‫dans cette section.

281
00:14:42,510 --> 00:14:45,840
‫Pour l'instant, je suis vraiment content du résultat que nous

282
00:14:45,840 --> 00:14:48,773
‫avons ici et c'est tout pour cette conférence.

