‫Instructeur : En tant que fonctionnalité suivante de
‫notre API, nous avons une
‫limitation de champ, donc, essentiellement, afin de permettre aux
‫clients de choisir les champs
‫qu'ils souhaitent récupérer dans la réponse.
‫Ainsi, pour un client, il est toujours
‫idéal de recevoir le moins de
‫données possible, afin de réduire
‫la bande passante consommée à chaque requête.
‫Et c'est, bien sûr, particulièrement vrai
‫lorsque nous avons des ensembles de données vraiment volumineux, n'est-ce pas ?
‫C'est donc une fonctionnalité très
‫intéressante de permettre à l'utilisateur de l'API de ne demander que certains champs.
‫Ainsi, comme troisième caractéristique, nous aurons une limitation de champ.
‫Et, comme avant, permettez-moi de commencer par vous montrer
‫comment cela va fonctionner ici dans Postman.
‫Donc, nous allons spécifier un champ appelé champs, puis le
‫nom des champs
‫que nous voulons réellement recevoir.
‫Alors disons que nous
‫voulons seulement
‫le nom, la durée, la difficulté et le prix, d'accord.
‫Et donc, l'implémentation sera en fait très similaire à ce que
‫nous faisions auparavant avec le tri.
‫Donc, si req. mettre en doute. champs, alors créons
‫encore une fois une
‫variable pour ces champs ici car, comme avant, Mongodbs demande
‫en fait une chaîne avec le
‫nom du champ séparé par des espaces, d'accord ?
‫Maintenant, permettez-moi de
‫commencer par écrire cette partie, d'accord, donc la requête elle-même.
‫Donc la requête est égale à la requête. sélectionnez, d'accord ?
‫Et ici, par exemple, il attend une
‫chaîne comme, nom puis espace, durée et un prix par exemple, d'accord.
‫Et donc de cette façon, il
‫ne sélectionnera que ces trois noms de champs
‫et renverra le résultat ne contenant que cela, d'accord ?
‫Et en fait, cette opération
‫de sélection de certains noms de champs seulement s'appelle la projection d'accord ?
‫Alors, allons de l'avant
‫et créons fondamentalement la chaîne, comme nous l'avons fait là-haut, d'accord.
‫Nous commençons donc par req. mettre en doute. champs, puis nous le divisons par
‫une virgule et le
‫joignons avec une chaîne vide.
‫Avec un espace en fait, désolé.
‫Donc avec l'espace et
‫ça va alors produire cette chaîne exacte avec ce format exact.
‫Alors ici, tout ce que nous avons à faire est d'utiliser ces champs.
‫Ensuite, comme avant, je souhaite également ajouter
‫une valeur par défaut, donc au cas où l'utilisateur
‫ne spécifierait pas le champ des champs, d'accord,
‫donc, dans ce cas, nous supprimerons simplement quelque chose, d'accord ?
‫Et laissez-moi vous montrer cela d'abord, donc ici, nous avons
‫toujours ce trait de soulignement V, qui est défini
‫sur zéro, et Mongodbs crée simplement ces champs car il
‫les utilise en interne.
‫Et nous pourrions les désactiver, mais ce n'est pas une bonne pratique.
‫Encore une fois, parce que Mongodbs les utilise réellement, d'accord, mais
‫ce que nous pouvons faire, c'est de
‫ne jamais les envoyer au client, donc nous pouvons les exclure.
‫Et la façon dont nous le faisons est de, au lieu de
‫faire un trait de soulignement V comme avant, donc
‫comme nous l'avons fait ici, en
‫gros, nous le préfixons simplement avec un moins, d'accord ?
‫Et le moins n'est donc pas inclus, mais exclu.
‫Donc ce que nous avions
‫avant ici encore, avec le nom et la
‫durée et le prix, c'était d'inclure ces champs dans la réponse.
‫Mais comme ça, avec
‫le moins, on a tout sauf le champ V ici d'accord ?
‫Nous excluons donc uniquement ce champ, d'accord ?
‫Alors allons-y et testons cela.
‫Envoyez-le, et attendons-le et ouais, en effet, l'ID est
‫par défaut, toujours inclus d'accord?
‫Nous ne pouvons donc pas supprimer cela, mais en
‫plus de cela, nous n'avons que le nom, la durée, la difficulté
‫et le prix, d'accord, et nous pourrions, bien sûr, également utiliser ce
‫moins pour que cette exclusion soit également ici.
‫On pourrait donc tout avoir, moins le nom
‫et moins la durée, par exemple.
‫Alors testons cela aussi.
‫Et donc, si vous le cochez maintenant, vous ne verrez pas le nom,
‫et ne verrez la durée nulle part ici.
‫Bon, et maintenant juste comme test
‫final, voyons si notre valeur par défaut fonctionne également.
‫Envoi de la réponse et donc, maintenant nous
‫n'avons plus cette variable V ici mise à zéro dans tous les documents.
‫D'accord, super, maintenant il y a une dernière chose que je
‫veux vous montrer, c'est
‫que nous pouvons également exclure des champs directement du schéma.
‫D'accord, et cela peut être très
‫utile, par exemple, lorsque nous avons des
‫données sensibles qui ne doivent être utilisées qu'en interne.
‫Par exemple, des éléments tels
‫que les mots de passe ne doivent jamais être exposés
‫au client et, par conséquent, nous
‫pouvons exclure certains champs directement dans le schéma.
‫Ainsi, par exemple, nous pourrions ne pas vouloir
‫que l'utilisateur sache quand exactement chaque visite a été créée.
‫Par exemple, la tournée peut déjà
‫être un peu ancienne
‫ou quelque chose du genre et donc, disons que nous voulons toujours
‫masquer ce champ createdAt, d'accord, afin
‫que nous puissions entrer dans notre schéma, qui
‫est dans le modèle de tournée bien sûr, puis
‫à createdAt, nous définissons simplement la propriété select ici sur false.
‫Et maintenant, quand nous essayons d'obtenir nos résultats, vous voyez qu'en fait
‫ce n'est plus là, d'accord ?
‫Et donc comme ça,
‫nous pouvons fondamentalement, cacher cela de façon permanente à la sortie.
‫Parfait, donc une autre fonctionnalité qui fonctionne réellement maintenant et
‫passons maintenant à la suivante.