‫Instructeur : Ainsi, Mongoose nous offre
‫aux développeurs des moyens très puissants de
‫valider les données qui entrent dans notre modèle.
‫Et donc, dans cette vidéo, vous allez
‫tout apprendre sur la validation des données avec Mongoose.
‫Maintenant, que signifie exactement la validation ?
‫Eh bien, la validation consiste essentiellement à vérifier si les
‫valeurs saisies sont au bon format pour
‫chaque champ de notre schéma de document, et également si
‫les valeurs ont bien été saisies pour tous les champs requis.
‫Maintenant, d'un autre côté, nous avons également la désinfection,
‫qui consiste à garantir que les données saisies sont
‫fondamentalement propres, de sorte qu'aucun code malveillant n'est
‫injecté dans notre base
‫de données ou dans l'application elle-même.
‫Donc, à cette étape, nous supprimons les caractères
‫indésirables, ou même le code, des données d'entrée, d'accord ?
‫Et c'est en fait une étape
‫cruciale, comme une norme d'or dans le développement back-end.
‫Ne jamais, jamais accepter les données d'entrée provenant
‫d'un utilisateur telles qu'elles sont.
‫Nous devons donc toujours désinfecter ces données entrantes.
‫Mais, de toute façon, je laisserai la désinfection des
‫données à la section sécurité du cours,
‫afin que dans cette
‫conférence, nous puissions nous concentrer entièrement sur la validation des données.
‫Et nous effectuons cette validation des données
‫ici même sur le modèle.
‫Et cela, encore une fois, est dû à la philosophie
‫du gros modèle et du
‫contrôleur mince, qui fait du modèle l'endroit
‫idéal pour effectuer la validation, n'est-ce pas ?
‫Et, en fait, Mongoose est déjà livré avec un
‫tas d'outils de validation prêts à l'emploi.
‫Et donc, faisons maintenant une validation des données ici.
‫Et en fait, nous l'avons déjà fait.
‫Donc, lorsque nous avons utilisé cette exigence ici, c'est en fait
‫déjà un validateur de données intégré, d'accord ?
‫Vous voyez donc que nous utilisons un validateur comme requis
‫ici dans les options de type de schéma.
‫Et requis est en fait disponible pour tous les types de données.
‫Donc, pas seulement des cordes, mais vraiment tout.
‫Nombres, booléens, dates, ou vraiment, quel que soit le
‫type que vous utilisez.
‫Ensuite, nous avons également unique ici, mais veuillez
‫noter qu'il ne s'agit en fait, techniquement, pas d'un validateur.
‫Cela produira toujours une erreur
‫lorsque nous aurons un nom en double,
‫mais encore une fois, ce n'est pas vraiment un validateur, d'accord ?
‫Mais, requis est un validateur, et donc
‫je vais vous en montrer maintenant un
‫autre qui est spécifiquement juste pour
‫les chaînes, qui est appelé longueur max et aussi longueur min.
‫Nous avons donc une
‫longueur maximale et, comme son nom l'indique, nous
‫l'utilisons pour spécifier la longueur maximale qu'une chaîne peut avoir.
‫Et si c'est plus long que ça,
‫eh bien, ça va produire une erreur, d'accord ?
‫Donc, faisons cela comme nous l'avons fait auparavant
‫avec required, où nous avons spécifié un tableau, puis définissons la valeur.
‫Donc, disons que nous voulons 40 comme longueur de chaîne
‫maximale, puis, nous ajoutons l'erreur après cela.
‫Donc, en gros, le message d'erreur que nous obtenons.
‫Ainsi, un nom de tournée doit avoir moins
‫ou égal à 40 caractères.
‫D'accord, c'est la longueur max, et puis
‫nous avons aussi la longueur min.
‫Très bien, et donc définissons celui-ci à 10, donc
‫un nom de tournée doit avoir plus ou égal à 10 caractères.
‫D'accord, et juste comme ça, nous avons ces deux validateurs qui ne sont
‫en fait disponibles que sur les chaînes, d'accord ?
‫Et, alors allons-y maintenant et essayons cela.
‫Donc, je vais créer une nouvelle tournée ici.
‫Et, ce n'est pas une visite
‫secrète, mais ici le reste n'a pas d'importance.
‫Je vais juste appeler celui-ci Test Tour, et
‫voyons combien de personnages nous avons,
‫donc quatre plus un, plus quatre, donc
‫nous n'avons que neuf personnages.
‫Et donc, nous devrions maintenant nous attendre à obtenir une erreur.
‫Alors, essayons ça.
‫Et, en effet, un nom de
‫tournée doit avoir plus ou égal à 10 caractères.
‫Génial, mais maintenant, qu'en est-il de la mise à jour des visites ?
‫Alors, prenons-en un ici.
‫Donc, nous avons cette tournée de test deux ici, alors essayons
‫de mettre à jour celle-ci.
‫Donc, nous allons à notre itinéraire de visite de mise à jour.
‫Et maintenant, changeons le nom en Test, envoyons la demande
‫et nous obtenons la même erreur.
‫Maintenant, cela ne fonctionne qu'à cause d'un paramètre
‫que nous avons défini il y
‫a longtemps, lorsque nous avons implémenté ce gestionnaire de mise à jour.
‫Alors, laissez-moi vous montrer cela rapidement dans le contrôleur de tournée.
‫Supprimer et mettre à jour, et c'est donc à
‫cause de cette option ici runValidators, définie
‫sur true que les validateurs sont exécutés à nouveau.
‫Si je le mets
‫maintenant sur false, alors Mongoose devrait accepter ce nom avec plaisir.
‫Et en effet, il le fait, très bien.
‫Donc, remettons-le à quelque chose de
‫plus long, ça
‫n'a pas d'importance, d'accord, et si je le remets à
‫vrai, alors il ne devrait
‫pas l'accepter, et en effet, nous récupérons notre erreur, d'accord ?
‫Donc, je voulais juste
‫vous montrer rapidement le fait de ce paramètre.
‫Très bien, et donc, oui, ceux-ci fonctionnent maintenant.
‫Essayons quelques autres validateurs ici.
‫Par exemple, maintenant sur les nombres.
‫Alors, passons ici à la moyenne des notes.
‫Et nous savons que la
‫note doit toujours être comprise entre un et zéro, et nous savons qu'une
‫note doit toujours être comprise entre un et cinq, d'accord ?
‫Et donc, très similaire à la longueur min et max,
‫sur les nombres, nous avons simplement min et max.
‫Ainsi, le minimum que nous voulons est un, puis
‫à nouveau notre message d'erreur.
‫Ainsi, la note doit être supérieure à 1. 0, disons.
‫Et puis le maximum est de cinq.
‫Doit être inférieur à 5. 0, d'accord, et testons
‫rapidement celui-ci également.
‫Alors, pour créer une nouvelle tournée, appelons-la la tournée d'essai
‫incroyable car elle a une note moyenne de six.
‫D'accord, alors voyons ce qui se passe alors,
‫et en effet, la note doit être inférieure à cinq.
‫D'accord, et donc, cela ne fonctionnera pas non plus,
‫et bien sûr, cela ne peut pas être zéro non plus.
‫Donc, ça doit être au-dessus d'un, et bien
‫sûr, avec quatre, ça va marcher, et en effet, voici notre tournée.
‫Ensuite, je veux restreindre cette valeur de difficulté ici
‫à seulement trois difficultés.
‫Donc, facile, moyen et difficile.
‫Et si l'utilisateur met autre chose,
‫cela ne fonctionnera pas.
‫Alors, essayons ça.
‫Ainsi, le validateur que nous utilisons pour cela s'appelle enum,
‫d'accord, et donc, ici, nous pouvons
‫passer un tableau des valeurs, fondamentalement, autorisées.
‫Donc, nous avons facile, nous avons moyen et nous avons difficile.
‫D'accord, maintenant nous voulons également spécifier notre message d'erreur ici, mais pour
‫le moment ce n'est pas vraiment possible, n'est-ce pas ?
‫Je veux dire, si nous ajoutions un autre argument
‫ici, alors ce ne serait pas
‫pour le message d'erreur, ce serait bien sûr pour une autre valeur possible, d'accord ?
‫Et donc, la solution que nous devons
‫faire ici est de créer encore un autre objet
‫ici, puis de spécifier en fait que ce sont ici les valeurs.
‫Et puis, notre message, d'accord ?
‫Et donc, c'est en fait comment cela fonctionne vraiment.
‫Cette notation ici n'est vraiment qu'un
‫raccourci pour cet objet complet ici, d'accord ?
‫Ainsi, la difficulté est soit : facile, moyenne ou difficile.
‫D'accord, et donc, c'est un validateur très sympa et très pratique qui est
‫automatiquement disponible sur toutes les chaînes, d'accord, alors, n'essayez pas
‫d'utiliser celui-ci ici sur des nombres, par exemple.
‫C'est seulement pour les chaînes.
‫Et, au fait, ce min et max ici ne
‫sont pas seulement pour les
‫nombres, mais ça va aussi fonctionner avec les dates, d'accord ?
‫Quoi qu'il en soit, testons enfin cela aussi.
‫Donc, nous devons changer le nom,
‫et ici mettons quelque chose
‫d'autre, d'accord, et en effet, nous obtenons notre erreur.
‫Si nous mettons maintenant facile, alors cela fonctionne.
‫D'accord, et c'est en fait tout ce que je
‫voulais vous montrer ici
‫dans cette conférence, mais il y a en fait un tas d'autres validateurs.
‫Par exemple, sur les chaînes, vous disposez d'un validateur
‫de correspondance afin de vérifier
‫si l'entrée correspond à une expression régulière donnée.
‫Mais, je crois que ceux que je viens de vous montrer
‫ici sont les validateurs intégrés les plus importants.
‫Et, pour une liste complète de
‫tous, bien sûr, vous pouvez toujours consulter la documentation.
‫Maintenant, nous pouvons également spécifier nos propres validateurs, et
‫c'est donc exactement ce que nous ferons
‫dans la prochaine vidéo.