﻿1
00:00:01,010 --> 00:00:02,650
‫Instructeur masculin : Enfin,

2
00:00:02,650 --> 00:00:05,053
‫gérons maintenant les erreurs de validation de Mongoose.

3
00:00:06,630 --> 00:00:09,750
‫Alors, rappelez-vous comment nous avons essayé de mettre à jour une

4
00:00:09,750 --> 00:00:11,410
‫visite avec des données invalides

5
00:00:11,410 --> 00:00:13,890
‫ici, puis avons obtenu ce genre d'erreur ?

6
00:00:13,890 --> 00:00:15,160
‫D'accord.

7
00:00:15,160 --> 00:00:17,923
‫Et essayons en fait d'en ajouter un autre.

8
00:00:19,890 --> 00:00:24,350
‫Alors un nom vraiment court, d'accord ?

9
00:00:24,350 --> 00:00:27,410
‫Et parce que ce n'est pas permis, encore une fois.

10
00:00:27,410 --> 00:00:30,680
‫Oh et maintenant nous ne pouvons plus voir notre erreur

11
00:00:30,680 --> 00:00:33,000
‫parce que nous sommes maintenant en production.

12
00:00:33,000 --> 00:00:34,750
‫Et bien sûr, cette erreur en ce

13
00:00:34,750 --> 00:00:36,370
‫moment n'est pas gérée correctement.

14
00:00:36,370 --> 00:00:38,730
‫Il n'est pas marqué comme opérationnel.

15
00:00:38,730 --> 00:00:39,580
‫Et donc,

16
00:00:39,580 --> 00:00:44,020
‫rappelez-vous que nous obtenons ce genre de message d'erreur générique en retour.

17
00:00:44,020 --> 00:00:45,040
‫D'accord?

18
00:00:45,040 --> 00:00:49,530
‫Donc juste pour voir l'erreur que nous avons eue

19
00:00:49,530 --> 00:00:52,263
‫auparavant, revenons rapidement au développement.

20
00:00:53,810 --> 00:00:55,253
‫Alors npm commence.

21
00:00:58,950 --> 00:01:00,610
‫Et, envoyez-le maintenant

22
00:01:00,610 --> 00:01:01,810
‫à nouveau.

23
00:01:01,810 --> 00:01:05,220
‫Et maintenant, nous récupérons nos erreurs de développement, d'accord ?

24
00:01:05,220 --> 00:01:06,590
‫Parce que maintenant,

25
00:01:06,590 --> 00:01:10,410
‫je veux vous montrer comment nous pouvons réellement créer un message d'erreur

26
00:01:10,410 --> 00:01:13,590
‫significatif basé sur tout cela, ce que nous avons ici.

27
00:01:13,590 --> 00:01:14,670
‫Maintenant à droite.

28
00:01:14,670 --> 00:01:16,690
‫Donc, à l'intérieur de

29
00:01:16,690 --> 00:01:19,280
‫notre erreur, nous obtenons une propriété d'erreur.

30
00:01:19,280 --> 00:01:21,800
‫Et cette propriété elle-même est

31
00:01:21,800 --> 00:01:24,540
‫un objet qui contient beaucoup d'objets, et

32
00:01:24,540 --> 00:01:28,770
‫chacun d'eux est pour l'un des champs qui a une erreur.

33
00:01:28,770 --> 00:01:29,790
‫D'accord?

34
00:01:29,790 --> 00:01:33,760
‫Donc, le premier ici est pour la durée de la tournée.

35
00:01:33,760 --> 00:01:35,760
‫Ensuite, le second est pour la

36
00:01:35,760 --> 00:01:37,310
‫difficulté, c'est aussi faux.

37
00:01:37,310 --> 00:01:40,400
‫Et le troisième est pour la note, d'accord ?

38
00:01:40,400 --> 00:01:44,520
‫Donc, chacun d'eux a en fait un beau message d'erreur, d'accord ?

39
00:01:44,520 --> 00:01:48,210
‫Donc en gros celui que nous avons défini dans notre schéma Mongoose.

40
00:01:48,210 --> 00:01:50,480
‫Et maintenant, nous voulons extraire ces

41
00:01:50,480 --> 00:01:52,490
‫trois messages d'ici, et

42
00:01:52,490 --> 00:01:55,920
‫les mettre tous dans une seule chaîne, d'accord ?

43
00:01:55,920 --> 00:01:58,593
‫Alors allons-y et faisons-le.

44
00:01:59,720 --> 00:02:00,553
‫D'accord.

45
00:02:00,553 --> 00:02:01,740
‫Et encore

46
00:02:01,740 --> 00:02:05,363
‫une fois, je vais commencer par créer le conditionnel ici.

47
00:02:06,720 --> 00:02:07,553
‫Donc si (erreur),

48
00:02:09,210 --> 00:02:10,760
‫et en fait, jetons un coup d'œil.

49
00:02:12,270 --> 00:02:14,290
‫Nous avons donc ici l'erreur.

50
00:02:14,290 --> 00:02:16,413
‫Nous avons les erreurs, toutes.

51
00:02:17,510 --> 00:02:19,840
‫Et je dois faire défiler ici.

52
00:02:19,840 --> 00:02:22,320
‫Et oui, alors voici le nom.

53
00:02:22,320 --> 00:02:26,300
‫Donc erreur. le nom est ValidationError, d'accord ?

54
00:02:26,300 --> 00:02:27,453
‫Alors saisissons cela.

55
00:02:32,150 --> 00:02:32,983
‫D'accord.

56
00:02:32,983 --> 00:02:36,010
‫Et encore une fois, c'est une erreur créée par Mongoose.

57
00:02:36,010 --> 00:02:37,440
‫Donc, tout comme

58
00:02:37,440 --> 00:02:40,023
‫le premier, et donc ils se ressemblent, d'accord.

59
00:02:41,150 --> 00:02:42,553
‫Maintenant, je ne veux pas de ça ici.

60
00:02:43,400 --> 00:02:45,410
‫Mais à la

61
00:02:45,410 --> 00:02:48,863
‫place, je veux que l'erreur soit égale à

62
00:02:54,290 --> 00:02:57,123
‫handleValidationErrorDB et envoie l'erreur, d'accord ?

63
00:02:59,400 --> 00:03:00,933
‫Maintenant, copions ceci à nouveau.

64
00:03:08,560 --> 00:03:09,840
‫D'accord.

65
00:03:09,840 --> 00:03:13,723
‫Et encore une fois, commençons simplement par créer notre message.

66
00:03:19,090 --> 00:03:20,523
‫Données d'entrée invalides.

67
00:03:23,060 --> 00:03:25,043
‫Et puis retournons également l'erreur.

68
00:03:27,520 --> 00:03:29,020
‫Donc nouvelle AppError (message, 400).

69
00:03:30,275 --> 00:03:31,860
‫Donc VS Code a

70
00:03:31,860 --> 00:03:35,073
‫déjà reconnu que je voulais taper juste ça, d'accord ?

71
00:03:38,130 --> 00:03:40,280
‫Maintenant, afin de créer une

72
00:03:40,280 --> 00:03:43,400
‫grande chaîne à partir de toutes les chaînes

73
00:03:43,400 --> 00:03:46,330
‫de toutes les erreurs, nous devons essentiellement parcourir

74
00:03:46,330 --> 00:03:51,180
‫tous ces objets, puis extraire tous les messages d'erreur dans un nouveau tableau.

75
00:03:51,180 --> 00:03:53,573
‫Alors, encore une fois, jetons un coup d'œil à cela.

76
00:03:54,440 --> 00:03:55,320
‫D'accord.

77
00:03:55,320 --> 00:03:58,430
‫Donc l'objet qui contient tous les objets

78
00:03:58,430 --> 00:04:01,290
‫contient des erreurs, d'accord ?

79
00:04:01,290 --> 00:04:03,800
‫Nous avons donc une erreur pour le nom, une pour

80
00:04:03,800 --> 00:04:05,870
‫la difficulté et une pour les notes moyennes.

81
00:04:05,870 --> 00:04:09,923
‫Et donc nous allons essentiellement boucler sur cet objet d'erreurs.

82
00:04:10,810 --> 00:04:11,660
‫D'accord?

83
00:04:11,660 --> 00:04:14,190
‫Et en JavaScript, nous utilisons Object. valeurs afin

84
00:04:14,190 --> 00:04:17,290
‫de boucler essentiellement sur un objet.

85
00:04:17,290 --> 00:04:19,720
‫Donc les éléments d'un objet.

86
00:04:19,720 --> 00:04:21,260
‫D'accord?

87
00:04:21,260 --> 00:04:25,000
‫Créons donc ici une variable appelée error, qui sera à

88
00:04:25,000 --> 00:04:26,700
‫nouveau un tableau de tous

89
00:04:26,700 --> 00:04:28,583
‫les messages d'erreur pour le moment,

90
00:04:29,640 --> 00:04:32,963
‫et maintenant Object. valeurs.

91
00:04:34,930 --> 00:04:38,863
‫Et donc nous voulons les valeurs d'erreur. erreurs, d'accord ?

92
00:04:41,540 --> 00:04:44,580
‫Et maintenant, passez-les en boucle à l'aide d'une carte.

93
00:04:44,580 --> 00:04:46,160
‫Et puis à

94
00:04:46,160 --> 00:04:50,220
‫chaque itération, nous allons simplement renvoyer le message d'erreur, d'accord ?

95
00:04:50,220 --> 00:04:54,540
‫Donc juste pour être sûr que nous sommes tous sur la

96
00:04:54,540 --> 00:04:59,470
‫même longueur d'onde ici, l'Objet. les valeurs sont ces objets, d'accord ?

97
00:04:59,470 --> 00:05:04,190
‫Alors cet objet, et cet objet, et le suivant, d'accord ?

98
00:05:04,190 --> 00:05:05,730
‫Voilà donc les valeurs.

99
00:05:05,730 --> 00:05:06,930
‫Et maintenant il

100
00:05:06,930 --> 00:05:09,110
‫ne nous reste plus qu'à faire pour extraire

101
00:05:09,110 --> 00:05:12,210
‫le message, c'est-à-dire la valeur. message, d'accord ?

102
00:05:12,210 --> 00:05:13,533
‫Donc . un message.

103
00:05:16,410 --> 00:05:18,380
‫Donc, fondamentalement, la valeur actuelle, ou

104
00:05:18,380 --> 00:05:19,710
‫disons l'élément actuel,

105
00:05:19,710 --> 00:05:21,653
‫j'aime utiliser element pour cela, et

106
00:05:22,640 --> 00:05:25,423
‫nous voulons retourner el. un message.

107
00:05:26,870 --> 00:05:27,703
‫D'accord.

108
00:05:28,940 --> 00:05:32,040
‫Et maintenant, bien sûr, cela ne devrait pas être ici.

109
00:05:32,040 --> 00:05:34,140
‫Et vous l'aviez probablement déjà remarqué.

110
00:05:35,260 --> 00:05:39,930
‫Donc en fait, c'est ici qu'on veut ça, d'accord ?

111
00:05:39,930 --> 00:05:41,280
‫Et maintenant, tout ce que

112
00:05:41,280 --> 00:05:45,163
‫nous avons à faire est de saisir ceci dans notre chaîne de message, d'accord ?

113
00:05:46,830 --> 00:05:51,700
‫Donc des erreurs, et maintenant nous les rassemblons simplement en

114
00:05:51,700 --> 00:05:56,700
‫une seule chaîne en utilisant un point puis un espace, d'accord ?

115
00:05:56,930 --> 00:05:59,263
‫Et vous verrez, dans une seconde, pourquoi.

116
00:06:00,350 --> 00:06:01,183
‫D'accord.

117
00:06:02,590 --> 00:06:05,130
‫Revenons donc à la production ici.

118
00:06:05,130 --> 00:06:07,483
‫Exécutez donc notre script de démarrage de la production.

119
00:06:08,960 --> 00:06:12,083
‫Essayez-le à nouveau maintenant et attendons, et bam

120
00:06:13,440 --> 00:06:14,310
‫!

121
00:06:14,310 --> 00:06:15,470
‫Nous y voilà!

122
00:06:15,470 --> 00:06:17,530
‫Donc données d'entrée invalides.

123
00:06:17,530 --> 00:06:19,990
‫Ensuite, la première chaîne d'erreur, doit avoir

124
00:06:19,990 --> 00:06:22,150
‫plus ou égal à 10 caractères.

125
00:06:22,150 --> 00:06:23,810
‫Puis le

126
00:06:23,810 --> 00:06:26,040
‫deuxième, et le troisième.

127
00:06:26,040 --> 00:06:26,900
‫Parfait.

128
00:06:26,900 --> 00:06:30,210
‫Et c'est pourquoi j'ai utilisé le point et l'espace, d'accord ?

129
00:06:30,210 --> 00:06:33,680
‫Donc, pour séparer ces trois chaînes avec un point

130
00:06:33,680 --> 00:06:36,210
‫et un espace, d'accord ?

131
00:06:36,210 --> 00:06:38,680
‫Et maintenant, cela ressemble à un message d'erreur

132
00:06:38,680 --> 00:06:41,693
‫très bien formaté que tout le monde peut facilement comprendre.

133
00:06:42,870 --> 00:06:43,703
‫Droit?

134
00:06:43,703 --> 00:06:46,180
‫Donc, nous avons essentiellement terminé ici.

135
00:06:46,180 --> 00:06:47,013
‫D'accord.

136
00:06:47,013 --> 00:06:49,890
‫Maintenant, nous aurions pu rendre cette erreur, erreur

137
00:06:49,890 --> 00:06:52,120
‫de gestion, beaucoup plus complète encore.

138
00:06:52,120 --> 00:06:56,640
‫Par exemple, nous pourrions définir différents niveaux de gravité d'erreur comme dire,

139
00:06:56,640 --> 00:06:59,130
‫cette erreur n'est pas si importante, cette

140
00:06:59,130 --> 00:07:01,130
‫erreur est moyennement importante

141
00:07:01,130 --> 00:07:04,770
‫et cette erreur est très importante ou même critique.

142
00:07:04,770 --> 00:07:08,400
‫Et nous pourrions également envoyer un e-mail à un administrateur

143
00:07:08,400 --> 00:07:10,430
‫au sujet des erreurs critiques.

144
00:07:10,430 --> 00:07:14,120
‫Et vraiment, il y a beaucoup de choses que nous pourrions mettre en œuvre.

145
00:07:14,120 --> 00:07:18,300
‫Mais encore une fois, dans une sorte de petite application comme celle-ci, ce

146
00:07:18,300 --> 00:07:21,810
‫que nous avons ici est déjà vraiment bien, d'accord ?

147
00:07:21,810 --> 00:07:24,410
‫C'est donc une stratégie assez solide que

148
00:07:24,410 --> 00:07:25,970
‫nous avons déjà mise

149
00:07:25,970 --> 00:07:29,150
‫en œuvre ici, et j'en suis vraiment satisfait, d'accord ?

150
00:07:29,150 --> 00:07:32,520
‫Donc toute cette logique ici avec les erreurs opérationnelles

151
00:07:32,520 --> 00:07:34,200
‫que nous avons implémentées

152
00:07:34,200 --> 00:07:36,393
‫ici, donc c'est déjà assez sophistiqué.

153
00:07:37,250 --> 00:07:38,083
‫D'accord?

154
00:07:39,290 --> 00:07:42,190
‫Maintenant, si jamais nous devions trouver une autre erreur que

155
00:07:42,190 --> 00:07:44,420
‫nous voulons marquer comme opérationnelle, alors bien sûr,

156
00:07:44,420 --> 00:07:46,410
‫tout ce que nous aurions à

157
00:07:46,410 --> 00:07:50,120
‫faire est quelque chose de similaire à ce que nous avons ici, d'accord ?

158
00:07:50,120 --> 00:07:53,750
‫Donc, en gros, implémentez une autre fonction pour celle-ci,

159
00:07:53,750 --> 00:07:56,630
‫puis renvoyez notre propre erreur opérationnelle afin

160
00:07:56,630 --> 00:07:58,620
‫que la production d'erreur d'envoi

161
00:07:58,620 --> 00:08:01,580
‫puisse ensuite envoyer cette erreur opérationnelle au client,

162
00:08:01,580 --> 00:08:03,473
‫n'est-ce pas ?

163
00:08:04,320 --> 00:08:06,580
‫D'accord, et cela étant dit,

164
00:08:06,580 --> 00:08:09,080
‫notre contrôleur d'erreur est en fait terminé.

165
00:08:09,080 --> 00:08:12,010
‫Mais il y a encore d'autres erreurs que

166
00:08:12,010 --> 00:08:16,090
‫nous devons gérer qui sont complètement en dehors de Mongo ou même d'Express.

167
00:08:16,090 --> 00:08:19,123
‫Et donc nous le faisons dans le reste de cette section.

