‫-: Bienvenue à la prochaine vidéo.
‫Et continuons maintenant avec une
‫nouvelle fonctionnalité assez avancée de Mongoose appelée
‫"Virtual Populate". « Donc,
‫à ce stade, nous avons
‫rempli les critiques avec
‫la visite et les données de l'utilisateur ici, n'est-ce pas ?
‫Et donc, en ce
‫moment, lorsque nous demandons des avis, nous avons accès à ces informations.
‫Cependant, cela laisse encore un problème non résolu.
‫Alors, comment allons-nous accéder aux avis sur les visites ?
‫Donc en gros, c'est l'inverse.
‫Donc, disons que j'ai demandé une visite spécifique.
‫Et puis, comment aurai-je
‫accès à toutes les critiques de cette tournée ?
‫Et ce problème se pose ici parce que
‫nous avons fait référence aux parents sur les critiques.
‫Donc, en gros, avoir les critiques pointant vers
‫les visites et non les visites pointant vers les critiques.
‫Et donc, comme nous l'avons dit au début de
‫la section, dans ce
‫cas, le parent ne connaît pas vraiment ses enfants.
‫Et donc, dans
‫cet exemple, la tournée ne connaît pas ses critiques.
‫Et parfois, ça va.
‫Mais dans ce cas, nous voulons en
‫fait que la tournée connaisse essentiellement toutes les critiques qu'elle a.
‫Maintenant, pour résoudre ce problème, avec
‫ce que nous savons
‫à ce stade, nous pourrions avoir deux solutions.
‫Et la première consisterait à rechercher
‫manuellement des avis chaque fois que nous recherchons des visites.
‫Mais ce serait un
‫peu fastidieux de le faire manuellement comme ça.
‫Et la deuxième solution pourrait être de faire aussi
‫du référencement des enfants sur les tournées.
‫Donc, en gros, conservez un tableau de
‫tous les identifiants de révision sur chaque document de visite.
‫Ensuite, tout ce que nous
‫aurions à faire serait de remplir ce tableau, n'est-ce pas ?
‫Mais, en fait, nous avons déjà exclu de
‫le faire correctement au
‫début, car nous ne voulons pas stocker
‫ce tableau d'ID d'avis qui pourrait
‫ensuite croître indéfiniment dans notre base de données, n'est-ce pas ?
‫Et c'est en fait exactement pourquoi nous avons choisi
‫le référencement des parents en premier lieu.
‫Cependant, il existe une excellente solution pour cela.
‫Et c'est parce que Mongoose nous offre en fait
‫une très bonne solution à ce
‫problème avec une fonctionnalité assez avancée appelée "Virtual Populate". ' Donc, avec 'Virtual Populate',
‫nous pouvons en
‫fait remplir la tournée avec des critiques.
‫Donc, en d'autres
‫termes, nous pouvons avoir accès à toutes les
‫critiques d'une certaine tournée, mais sans conserver cet éventail d'identifiants sur la tournée.
‫Alors, pensez à "Virtual
‫Populate" comme un moyen de conserver ce tableau d'ID de
‫révision lors d'une tournée, mais sans le conserver dans la base de données.
‫Et donc cela résout le problème que
‫nous avons avec le référencement des enfants, n'est-ce pas ?
‫Donc, c'est un peu comme les champs virtuels, mais avec la population, d'accord ?
‫Donc, juste pour illustrer
‫cela, passons à notre modèle de tournée ici.
‫Et donc, ce que je viens de
‫décrire serait, en théorie, de faire quelque chose comme ça.
‫Ainsi, sur notre modèle de tournée,
‫nous ajouterions un champ appelé « Avis ». ' (cliquant
‫sur les touches) Et puis définissez
‫le type sur Mongoose. Schéma. ID d'objet.
‫(les touches cliquent) Et vous n'avez
‫pas besoin d'écrire ceci.
‫Je le fais juste pour te le montrer.
‫(cliquant sur les touches) Et
‫puis connectez-le avec 'Review. ' Et bien
‫sûr, ceci ici devrait être un objet.
‫Mais ce qui compte ici, c'est que c'est essentiellement
‫ainsi que nous mettrons en œuvre le référencement des enfants.
‫Alors la tournée fait référence aux critiques, d'accord ?
‫Mais encore une fois, nous ne voulons pas le faire.
‫Donc, à la place, nous allons implémenter 'Virtual Populate. ' (cliquant
‫sur les touches)
‫D'accord. Et ça marche comme ça.
‫Nous le faisons donc ici sur le schéma de la tournée.
‫(les touches cliquent) Et nous le
‫faisons toujours. virtuel.
‫Donc comme avec ce champ virtuel ici,
‫durée semaine, puis on tape le nom du champ virtuel.
‫Appelons-le donc «
‫Reviews », puis un objet de certaines options.
‫Et le premier est le
‫nom du modèle que nous voulons référencer.
‫Et donc ça marche comme avec le référencement normal.
‫(clic des touches) Encore
‫une fois, le nom du modèle.
‫Donc, « Examen » ou bien sûr, dans ce cas.
‫Et maintenant, nous devons en fait spécifier le nom des
‫champs afin de connecter les deux ensembles de données.
‫Et c'est, pour moi, la partie la plus compliquée de la mise en
‫œuvre de ce 'Virtual Populate. ' Et
‫donc, assurons-nous que vous comprenez vraiment cette partie.
‫Donc ici, nous devons spécifier deux champs.
‫Le champ étranger et le champ local.
‫Commençons donc par le champ étranger.
‫Et donc, c'est le nom du champ dans l'autre modèle.
‫Donc dans le modèle Review
‫dans ce cas, où la référence au modèle actuel est stockée.
‫Et c'est, dans ce cas, le terrain du Tour, non ?
‫Alors, regardons ça.
‫Et donc, encore une fois, dans notre modèle d'examen, nous
‫avons un champ appelé "Tour". ' Et c'est
‫donc là que l'ID de la tournée est stocké.
‫Et c'est pourquoi ici, dans ce
‫champ étranger, nous spécifions ce nom de
‫ce champ afin de connecter ces deux modèles, d'accord ?
‫Et maintenant, nous devons faire la même chose pour le modèle actuel.
‫Donc, nous devons dire où cet ID est réellement
‫stocké ici dans ce modèle Tour actuel.
‫Donc, champ local.
‫Et c'est, l'ID.
‫Alors, _ID, d'accord ?
‫Et donc, encore une fois, ce _ID, qui
‫est son nom dans le
‫modèle local, est appelé 'Tour' dans le modèle étranger.
‫Donc, dans le modèle Review. D'accord?
‫Et encore une fois, c'est ainsi que
‫nous connectons ces deux modèles ensemble.
‫Écrivons ici qu'il s'agit
‫de « Population virtuelle », d'accord ?
‫Et maintenant, avec cette configuration, nous pouvons
‫réellement utiliser Populate comme nous le faisions auparavant.
‫Et donc ce que nous voulons faire
‫maintenant, c'est aller de l'avant et
‫remplir la tournée quand nous n'avons qu'une seule tournée, d'accord ?
‫Donc ici dans Postman, c'est dans cette situation de 'Get Tour'. ' D'accord?
‫Voyons si cela existe réellement.
‫Et c'est le cas, mais c'est cette tournée d'essai étrange.
‫Et donc, faisons-le avec celui-ci 'Forest Hiker'.
‫D'accord.
‫Ainsi, lorsque nous aurons cette
‫tournée, nous voulons maintenant remplir les critiques.
‫Et il devrait déjà être ici en tant que tableau vide.
‫Ah, voilà.
‫Ce n'est pas un tableau vide, mais il est défini sur 'null. ' Mais
‫le champ virtuel est en
‫fait déjà là avec les critiques.
‫Mais c'est nul à ce stade
‫parce que nous ne l'avons pas encore rempli, d'accord ?
‫Et encore une fois, nous voulons seulement
‫le remplir ici dans
‫le « Get One Tour », et non dans
‫« Get All Tours » car ce
‫serait un peu trop d'informations à envoyer à un client lorsqu'il recevra toutes les visites.
‫De plus, lorsque nous obtenons toutes les
‫visites, c'est généralement pour créer une page de vue d'ensemble.
‫Et dans ce cas,
‫nous n'avons généralement pas besoin d'accéder à tous les avis.
‫Nous n'en avons besoin
‫que lorsque nous n'affichons réellement qu'une seule tournée.
‫D'accord? Et donc, je pense qu'il
‫est logique de ne faire cette population que sur 'Get One Tour'. ' Alors,
‫faisons ce peuplement directement
‫dans le contrôleur.
‫Donc, le contrôleur de tournée et ici où nous
‫avons « Get Tour ». ' Et donc,
‫c'est en fait très facile.
‫Il suffit d'appeler 'Populate' après l'autre
‫requête, puis de passer simplement le nom du champ
‫que nous voulons remplir.
‫Et donc, comme nous le savons déjà, cela s'appelle "Avis". ' Et,
‫donc ça devrait déjà être ça.
‫D'accord?
‫Alors, testons cela maintenant et examinons cela.
‫Et en effet, nous obtenons maintenant notre examen complet ici.
‫D'accord? Alors ça s'est peuplé.
‫Et cela signifie donc que notre
‫population virtuelle fonctionne réellement.
‫Maintenant, vous pourriez commencer
‫à voir que cela crée
‫une sorte de problème, car ici, cela
‫crée essentiellement une chaîne de peuplements.
‫Et ce n'est pas du tout l'idéal.
‫Donc, nous avons la tournée remplie de critiques.
‫Mais ensuite, les critiques sont également
‫remplies à nouveau avec la visite, ainsi qu'avec l'utilisateur.
‫Et puis la visite se
‫remplit également de guides.
‫Ce qui, dans ce cas, ne se produit pas
‫car il n'y a pas de guides.
‫Mais s'il y en avait, alors nous aurions encore une autre population.
‫Et donc ici, nous aurions une chaîne de trois populations.
‫Et donc pour les performances, ce n'est bien sûr pas idéal du tout.
‫Surtout ici avec la tournée.
‫Nous avons donc la tournée peuplée de critiques.
‫Et dans les critiques, nous avons à nouveau les données sur la tournée.
‫Et donc cela n'a pas beaucoup de sens du tout.
‫Donc, c'est un peu le bordel maintenant.
‫DONC, la solution que je vais utiliser
‫ici est de
‫désactiver le remplissage des avis avec les visites, d'accord ?
‫Donc, fondamentalement, nous n'avons pas besoin de ces données ici sur chaque examen.
‫Donc dans ce cas, je pense que c'est une bonne solution.
‫Mais bien sûr, encore une fois dans votre cas,
‫cela dépendra toujours du fonctionnement
‫de votre application dans votre cas spécifique.
‫Mais dans cette application, il est plus logique d'avoir
‫vraiment les critiques disponibles sur les
‫tournées, et ce n'est pas si important
‫d'avoir la tournée disponible sur la critique, d'accord ?
‫Donc, désactivons essentiellement cette population, dans le
‫modèle Review.
‫D'accord?
‫Alors, commentons simplement cette partie, copions-la
‫ici, et
‫donc, en gros, débarrassons-nous de cette première partie.
‫Maintenant, d'accord ?
‫Préparez-vous à économiser.
‫Essayons à nouveau.
‫Et donc, maintenant, nous ne devrions voir que l'ID de la tournée ici.
‫D'accord? Et en effet, c'est exactement ce que nous obtenons.
‫D'accord? Maintenant, avec cela,
‫bien sûr, nous faisons toujours du référencement aux parents, d'accord ?
‫Nous gardons toujours une référence aux visites ici, mais
‫nous ne la remplissons tout simplement pas.
‫Et encore, parce que nous n'avons
‫pas toujours besoin de ces données ici.
‫D'accord. Récapitulons rapidement ce que nous avons fait ici.
‫Nous avons donc commencé à ne faire que le référencement des parents sur l'examen.
‫Mais cela a fait que lors
‫des tournées, nous n'avions pas accès à ses critiques correspondantes.
‫Et la solution la plus simple pour
‫cela serait de faire également du référencement des enfants lors des visites.
‫Mais le problème avec
‫cela serait que nous ne voulons pas réellement
‫conserver un tableau de tous les
‫documents enfants sur le document parent, n'est-ce pas ?
‫Parce que, encore une fois,
‫nous ne voulons pas permettre aux tableaux de croître indéfiniment.
‫Ainsi, au lieu
‫de faire cela, nous avons implémenté des populations virtuelles comme celle-ci.
‫D'accord? Alors, juste comme ça.
‫Et cela nous permet de faire exactement la même chose.
‫Donc, en gardant une référence à tous les
‫documents enfants
‫sur le document parent, mais sans réellement conserver ces
‫informations dans la base de données.
‫Et donc, après avoir configuré ce peuplement
‫virtuel, tout ce que nous avions à faire
‫était d'utiliser essentiellement Populate comme nous l'avons fait auparavant avec les références réelles.
‫Et puis, enfin, nous
‫avons également désactivé l'une des populations que nous avions sur l'examen.
‫Donc, celui-ci ici, où
‫nous avons renseigné l'ID de la tournée,
‫car cela créait une chaîne de remplissage inefficace.
‫Et c'est donc, bien sûr, quelque chose que nous ne voulons pas.
‫Et donc, au final,
‫on s'est retrouvé avec un résultat comme celui-ci, d'accord ?
‫Super.
‫Donc, j'espère que cela a du sens pour vous.
‫Et donc avec
‫cela, nous terminons pour l'instant cette partie du peuplement, d'accord ?
‫Et donc maintenant passons à un sujet
‫suivant, qui consiste essentiellement à créer des routes imbriquées.