﻿1
00:00:01,060 --> 00:00:03,440
‫Instructeur : Ainsi, Mongoose nous offre

2
00:00:03,440 --> 00:00:05,823
‫aux développeurs des moyens très puissants de

3
00:00:05,823 --> 00:00:08,280
‫valider les données qui entrent dans notre modèle.

4
00:00:08,280 --> 00:00:10,430
‫Et donc, dans cette vidéo, vous allez

5
00:00:10,430 --> 00:00:13,093
‫tout apprendre sur la validation des données avec Mongoose.

6
00:00:14,870 --> 00:00:18,110
‫Maintenant, que signifie exactement la validation ?

7
00:00:18,110 --> 00:00:21,470
‫Eh bien, la validation consiste essentiellement à vérifier si les

8
00:00:21,470 --> 00:00:24,270
‫valeurs saisies sont au bon format pour

9
00:00:24,270 --> 00:00:27,430
‫chaque champ de notre schéma de document, et également si

10
00:00:27,430 --> 00:00:30,860
‫les valeurs ont bien été saisies pour tous les champs requis.

11
00:00:30,860 --> 00:00:33,940
‫Maintenant, d'un autre côté, nous avons également la désinfection,

12
00:00:33,940 --> 00:00:37,240
‫qui consiste à garantir que les données saisies sont

13
00:00:37,240 --> 00:00:40,250
‫fondamentalement propres, de sorte qu'aucun code malveillant n'est

14
00:00:40,250 --> 00:00:42,240
‫injecté dans notre base

15
00:00:42,240 --> 00:00:44,330
‫de données ou dans l'application elle-même.

16
00:00:44,330 --> 00:00:47,470
‫Donc, à cette étape, nous supprimons les caractères

17
00:00:47,470 --> 00:00:50,730
‫indésirables, ou même le code, des données d'entrée, d'accord ?

18
00:00:50,730 --> 00:00:53,210
‫Et c'est en fait une étape

19
00:00:53,210 --> 00:00:56,180
‫cruciale, comme une norme d'or dans le développement back-end.

20
00:00:56,180 --> 00:00:58,690
‫Ne jamais, jamais accepter les données d'entrée provenant

21
00:00:58,690 --> 00:01:00,690
‫d'un utilisateur telles qu'elles sont.

22
00:01:00,690 --> 00:01:03,860
‫Nous devons donc toujours désinfecter ces données entrantes.

23
00:01:03,860 --> 00:01:06,350
‫Mais, de toute façon, je laisserai la désinfection des

24
00:01:06,350 --> 00:01:08,620
‫données à la section sécurité du cours,

25
00:01:08,620 --> 00:01:10,070
‫afin que dans cette

26
00:01:10,070 --> 00:01:13,400
‫conférence, nous puissions nous concentrer entièrement sur la validation des données.

27
00:01:13,400 --> 00:01:15,430
‫Et nous effectuons cette validation des données

28
00:01:15,430 --> 00:01:17,240
‫ici même sur le modèle.

29
00:01:17,240 --> 00:01:20,130
‫Et cela, encore une fois, est dû à la philosophie

30
00:01:20,130 --> 00:01:22,110
‫du gros modèle et du

31
00:01:22,110 --> 00:01:24,230
‫contrôleur mince, qui fait du modèle l'endroit

32
00:01:24,230 --> 00:01:26,770
‫idéal pour effectuer la validation, n'est-ce pas ?

33
00:01:26,770 --> 00:01:29,540
‫Et, en fait, Mongoose est déjà livré avec un

34
00:01:29,540 --> 00:01:32,230
‫tas d'outils de validation prêts à l'emploi.

35
00:01:32,230 --> 00:01:36,120
‫Et donc, faisons maintenant une validation des données ici.

36
00:01:36,120 --> 00:01:37,680
‫Et en fait, nous l'avons déjà fait.

37
00:01:37,680 --> 00:01:41,850
‫Donc, lorsque nous avons utilisé cette exigence ici, c'est en fait

38
00:01:41,850 --> 00:01:45,290
‫déjà un validateur de données intégré, d'accord ?

39
00:01:45,290 --> 00:01:48,368
‫Vous voyez donc que nous utilisons un validateur comme requis

40
00:01:48,368 --> 00:01:50,970
‫ici dans les options de type de schéma.

41
00:01:50,970 --> 00:01:54,340
‫Et requis est en fait disponible pour tous les types de données.

42
00:01:54,340 --> 00:01:56,870
‫Donc, pas seulement des cordes, mais vraiment tout.

43
00:01:56,870 --> 00:02:00,010
‫Nombres, booléens, dates, ou vraiment, quel que soit le

44
00:02:00,010 --> 00:02:01,930
‫type que vous utilisez.

45
00:02:01,930 --> 00:02:04,970
‫Ensuite, nous avons également unique ici, mais veuillez

46
00:02:04,970 --> 00:02:08,610
‫noter qu'il ne s'agit en fait, techniquement, pas d'un validateur.

47
00:02:08,610 --> 00:02:10,170
‫Cela produira toujours une erreur

48
00:02:10,170 --> 00:02:12,080
‫lorsque nous aurons un nom en double,

49
00:02:12,080 --> 00:02:15,167
‫mais encore une fois, ce n'est pas vraiment un validateur, d'accord ?

50
00:02:15,167 --> 00:02:17,790
‫Mais, requis est un validateur, et donc

51
00:02:17,790 --> 00:02:20,403
‫je vais vous en montrer maintenant un

52
00:02:20,403 --> 00:02:23,000
‫autre qui est spécifiquement juste pour

53
00:02:23,000 --> 00:02:26,870
‫les chaînes, qui est appelé longueur max et aussi longueur min.

54
00:02:26,870 --> 00:02:28,160
‫Nous avons donc une

55
00:02:30,320 --> 00:02:32,830
‫longueur maximale et, comme son nom l'indique, nous

56
00:02:32,830 --> 00:02:35,470
‫l'utilisons pour spécifier la longueur maximale qu'une chaîne peut avoir.

57
00:02:35,470 --> 00:02:37,490
‫Et si c'est plus long que ça,

58
00:02:37,490 --> 00:02:39,800
‫eh bien, ça va produire une erreur, d'accord ?

59
00:02:39,800 --> 00:02:42,936
‫Donc, faisons cela comme nous l'avons fait auparavant

60
00:02:42,936 --> 00:02:47,170
‫avec required, où nous avons spécifié un tableau, puis définissons la valeur.

61
00:02:47,170 --> 00:02:50,940
‫Donc, disons que nous voulons 40 comme longueur de chaîne

62
00:02:50,940 --> 00:02:53,920
‫maximale, puis, nous ajoutons l'erreur après cela.

63
00:02:53,920 --> 00:02:56,850
‫Donc, en gros, le message d'erreur que nous obtenons.

64
00:02:56,850 --> 00:03:01,093
‫Ainsi, un nom de tournée doit avoir moins

65
00:03:05,410 --> 00:03:08,693
‫ou égal à 40 caractères.

66
00:03:10,880 --> 00:03:13,320
‫D'accord, c'est la longueur max, et puis

67
00:03:13,320 --> 00:03:15,673
‫nous avons aussi la longueur min.

68
00:03:18,600 --> 00:03:22,480
‫Très bien, et donc définissons celui-ci à 10, donc

69
00:03:22,480 --> 00:03:27,480
‫un nom de tournée doit avoir plus ou égal à 10 caractères.

70
00:03:29,010 --> 00:03:33,590
‫D'accord, et juste comme ça, nous avons ces deux validateurs qui ne sont

71
00:03:33,590 --> 00:03:37,320
‫en fait disponibles que sur les chaînes, d'accord ?

72
00:03:37,320 --> 00:03:40,690
‫Et, alors allons-y maintenant et essayons cela.

73
00:03:40,690 --> 00:03:42,690
‫Donc, je vais créer une nouvelle tournée ici.

74
00:03:44,570 --> 00:03:46,453
‫Et, ce n'est pas une visite

75
00:03:48,050 --> 00:03:50,183
‫secrète, mais ici le reste n'a pas d'importance.

76
00:03:53,550 --> 00:03:56,100
‫Je vais juste appeler celui-ci Test Tour, et

77
00:03:56,100 --> 00:03:58,160
‫voyons combien de personnages nous avons,

78
00:03:58,160 --> 00:04:00,280
‫donc quatre plus un, plus quatre, donc

79
00:04:00,280 --> 00:04:02,130
‫nous n'avons que neuf personnages.

80
00:04:02,130 --> 00:04:05,223
‫Et donc, nous devrions maintenant nous attendre à obtenir une erreur.

81
00:04:06,490 --> 00:04:07,980
‫Alors, essayons ça.

82
00:04:07,980 --> 00:04:09,910
‫Et, en effet, un nom de

83
00:04:09,910 --> 00:04:12,460
‫tournée doit avoir plus ou égal à 10 caractères.

84
00:04:12,460 --> 00:04:15,873
‫Génial, mais maintenant, qu'en est-il de la mise à jour des visites ?

85
00:04:17,290 --> 00:04:19,860
‫Alors, prenons-en un ici.

86
00:04:19,860 --> 00:04:23,910
‫Donc, nous avons cette tournée de test deux ici, alors essayons

87
00:04:23,910 --> 00:04:25,963
‫de mettre à jour celle-ci.

88
00:04:27,540 --> 00:04:30,173
‫Donc, nous allons à notre itinéraire de visite de mise à jour.

89
00:04:33,690 --> 00:04:38,023
‫Et maintenant, changeons le nom en Test, envoyons la demande

90
00:04:39,890 --> 00:04:43,240
‫et nous obtenons la même erreur.

91
00:04:43,240 --> 00:04:45,540
‫Maintenant, cela ne fonctionne qu'à cause d'un paramètre

92
00:04:45,540 --> 00:04:47,400
‫que nous avons défini il y

93
00:04:47,400 --> 00:04:50,600
‫a longtemps, lorsque nous avons implémenté ce gestionnaire de mise à jour.

94
00:04:50,600 --> 00:04:53,853
‫Alors, laissez-moi vous montrer cela rapidement dans le contrôleur de tournée.

95
00:04:54,860 --> 00:04:57,846
‫Supprimer et mettre à jour, et c'est donc à

96
00:04:57,846 --> 00:05:00,255
‫cause de cette option ici runValidators, définie

97
00:05:00,255 --> 00:05:03,180
‫sur true que les validateurs sont exécutés à nouveau.

98
00:05:03,180 --> 00:05:04,959
‫Si je le mets

99
00:05:04,959 --> 00:05:09,750
‫maintenant sur false, alors Mongoose devrait accepter ce nom avec plaisir.

100
00:05:09,750 --> 00:05:12,673
‫Et en effet, il le fait, très bien.

101
00:05:14,880 --> 00:05:17,072
‫Donc, remettons-le à quelque chose de

102
00:05:17,072 --> 00:05:18,453
‫plus long, ça

103
00:05:20,630 --> 00:05:24,073
‫n'a pas d'importance, d'accord, et si je le remets à

104
00:05:26,950 --> 00:05:29,070
‫vrai, alors il ne devrait

105
00:05:29,070 --> 00:05:33,140
‫pas l'accepter, et en effet, nous récupérons notre erreur, d'accord ?

106
00:05:33,140 --> 00:05:34,540
‫Donc, je voulais juste

107
00:05:34,540 --> 00:05:36,763
‫vous montrer rapidement le fait de ce paramètre.

108
00:05:38,820 --> 00:05:42,370
‫Très bien, et donc, oui, ceux-ci fonctionnent maintenant.

109
00:05:42,370 --> 00:05:46,030
‫Essayons quelques autres validateurs ici.

110
00:05:46,030 --> 00:05:48,450
‫Par exemple, maintenant sur les nombres.

111
00:05:48,450 --> 00:05:51,520
‫Alors, passons ici à la moyenne des notes.

112
00:05:51,520 --> 00:05:53,370
‫Et nous savons que la

113
00:05:53,370 --> 00:05:57,330
‫note doit toujours être comprise entre un et zéro, et nous savons qu'une

114
00:05:57,330 --> 00:06:00,880
‫note doit toujours être comprise entre un et cinq, d'accord ?

115
00:06:00,880 --> 00:06:03,680
‫Et donc, très similaire à la longueur min et max,

116
00:06:03,680 --> 00:06:06,253
‫sur les nombres, nous avons simplement min et max.

117
00:06:08,350 --> 00:06:11,353
‫Ainsi, le minimum que nous voulons est un, puis

118
00:06:15,240 --> 00:06:17,253
‫à nouveau notre message d'erreur.

119
00:06:18,280 --> 00:06:23,280
‫Ainsi, la note doit être supérieure à 1. 0, disons.

120
00:06:26,360 --> 00:06:29,643
‫Et puis le maximum est de cinq.

121
00:06:34,040 --> 00:06:38,660
‫Doit être inférieur à 5. 0, d'accord, et testons

122
00:06:38,660 --> 00:06:40,873
‫rapidement celui-ci également.

123
00:06:43,300 --> 00:06:48,300
‫Alors, pour créer une nouvelle tournée, appelons-la la tournée d'essai

124
00:06:49,390 --> 00:06:53,933
‫incroyable car elle a une note moyenne de six.

125
00:06:55,020 --> 00:06:57,680
‫D'accord, alors voyons ce qui se passe alors,

126
00:06:57,680 --> 00:07:00,380
‫et en effet, la note doit être inférieure à cinq.

127
00:07:00,380 --> 00:07:03,620
‫D'accord, et donc, cela ne fonctionnera pas non plus,

128
00:07:03,620 --> 00:07:06,930
‫et bien sûr, cela ne peut pas être zéro non plus.

129
00:07:06,930 --> 00:07:10,130
‫Donc, ça doit être au-dessus d'un, et bien

130
00:07:10,130 --> 00:07:14,650
‫sûr, avec quatre, ça va marcher, et en effet, voici notre tournée.

131
00:07:14,650 --> 00:07:18,180
‫Ensuite, je veux restreindre cette valeur de difficulté ici

132
00:07:18,180 --> 00:07:20,090
‫à seulement trois difficultés.

133
00:07:20,090 --> 00:07:22,480
‫Donc, facile, moyen et difficile.

134
00:07:22,480 --> 00:07:24,660
‫Et si l'utilisateur met autre chose,

135
00:07:24,660 --> 00:07:26,360
‫cela ne fonctionnera pas.

136
00:07:26,360 --> 00:07:27,623
‫Alors, essayons ça.

137
00:07:32,660 --> 00:07:36,420
‫Ainsi, le validateur que nous utilisons pour cela s'appelle enum,

138
00:07:36,420 --> 00:07:38,850
‫d'accord, et donc, ici, nous pouvons

139
00:07:38,850 --> 00:07:41,403
‫passer un tableau des valeurs, fondamentalement, autorisées.

140
00:07:42,570 --> 00:07:47,570
‫Donc, nous avons facile, nous avons moyen et nous avons difficile.

141
00:07:49,550 --> 00:07:53,380
‫D'accord, maintenant nous voulons également spécifier notre message d'erreur ici, mais pour

142
00:07:53,380 --> 00:07:56,870
‫le moment ce n'est pas vraiment possible, n'est-ce pas ?

143
00:07:56,870 --> 00:07:59,490
‫Je veux dire, si nous ajoutions un autre argument

144
00:07:59,490 --> 00:08:01,330
‫ici, alors ce ne serait pas

145
00:08:01,330 --> 00:08:05,540
‫pour le message d'erreur, ce serait bien sûr pour une autre valeur possible, d'accord ?

146
00:08:05,540 --> 00:08:08,200
‫Et donc, la solution que nous devons

147
00:08:08,200 --> 00:08:10,993
‫faire ici est de créer encore un autre objet

148
00:08:11,900 --> 00:08:15,613
‫ici, puis de spécifier en fait que ce sont ici les valeurs.

149
00:08:18,870 --> 00:08:23,560
‫Et puis, notre message, d'accord ?

150
00:08:23,560 --> 00:08:26,230
‫Et donc, c'est en fait comment cela fonctionne vraiment.

151
00:08:26,230 --> 00:08:29,040
‫Cette notation ici n'est vraiment qu'un

152
00:08:29,040 --> 00:08:32,763
‫raccourci pour cet objet complet ici, d'accord ?

153
00:08:34,760 --> 00:08:39,760
‫Ainsi, la difficulté est soit : facile, moyenne ou difficile.

154
00:08:45,280 --> 00:08:50,280
‫D'accord, et donc, c'est un validateur très sympa et très pratique qui est

155
00:08:50,323 --> 00:08:53,870
‫automatiquement disponible sur toutes les chaînes, d'accord, alors, n'essayez pas

156
00:08:53,870 --> 00:08:57,348
‫d'utiliser celui-ci ici sur des nombres, par exemple.

157
00:08:57,348 --> 00:08:59,870
‫C'est seulement pour les chaînes.

158
00:08:59,870 --> 00:09:02,540
‫Et, au fait, ce min et max ici ne

159
00:09:02,540 --> 00:09:04,450
‫sont pas seulement pour les

160
00:09:04,450 --> 00:09:07,820
‫nombres, mais ça va aussi fonctionner avec les dates, d'accord ?

161
00:09:07,820 --> 00:09:12,820
‫Quoi qu'il en soit, testons enfin cela aussi.

162
00:09:13,180 --> 00:09:15,399
‫Donc, nous devons changer le nom,

163
00:09:15,399 --> 00:09:17,249
‫et ici mettons quelque chose

164
00:09:20,460 --> 00:09:23,233
‫d'autre, d'accord, et en effet, nous obtenons notre erreur.

165
00:09:24,770 --> 00:09:28,080
‫Si nous mettons maintenant facile, alors cela fonctionne.

166
00:09:28,080 --> 00:09:30,450
‫D'accord, et c'est en fait tout ce que je

167
00:09:30,450 --> 00:09:31,780
‫voulais vous montrer ici

168
00:09:31,780 --> 00:09:35,110
‫dans cette conférence, mais il y a en fait un tas d'autres validateurs.

169
00:09:35,110 --> 00:09:38,259
‫Par exemple, sur les chaînes, vous disposez d'un validateur

170
00:09:38,259 --> 00:09:40,370
‫de correspondance afin de vérifier

171
00:09:40,370 --> 00:09:43,090
‫si l'entrée correspond à une expression régulière donnée.

172
00:09:43,090 --> 00:09:46,460
‫Mais, je crois que ceux que je viens de vous montrer

173
00:09:46,460 --> 00:09:49,250
‫ici sont les validateurs intégrés les plus importants.

174
00:09:49,250 --> 00:09:51,450
‫Et, pour une liste complète de

175
00:09:51,450 --> 00:09:54,530
‫tous, bien sûr, vous pouvez toujours consulter la documentation.

176
00:09:54,530 --> 00:09:57,590
‫Maintenant, nous pouvons également spécifier nos propres validateurs, et

177
00:09:57,590 --> 00:09:59,790
‫c'est donc exactement ce que nous ferons

178
00:09:59,790 --> 00:10:01,363
‫dans la prochaine vidéo.

