‫Instructeur : Dans cette vidéo, continuons à
‫traduire le modèle de données que nous avons établi dès
‫le début de la section en un code réel.
‫Et donc, cette fois, nous allons implémenter le modèle des critiques.
‫La première étape consiste donc à créer un nouveau fichier dans
‫le dossier models et à l'appeler ReviewModel. js.
‫Et pour moi, cela ressemble à un autre grand défi pour vous
‫de mettre en pratique certaines des
‫compétences que vous avez déjà apprises jusqu'à présent.
‫D'accord, dans ce défi, je veux que vous créiez
‫le modèle d'examen.
‫Et ce dont nous avons besoin là-dedans est en fait très simple.
‫Alors permettez-moi de mettre cela ici dans un commentaire.
‫Donc, nous voulons essentiellement un
‫examen, donc le texte de l'examen.
‫Nous voulons
‫une note comme celle-ci.
‫Ensuite, nous voulons également un createdAt donc avec
‫l'horodatage actuel, puis nous
‫voulons également une référence à la tournée à laquelle appartient
‫cette critique et
‫également à l'utilisateur qui a écrit cette critique.
‫D'accord, donc en gros, deux références parentales ici, d'accord.
‫Et donc avec les choses que vous avez
‫apprises au cours des deux
‫dernières conférences, vous devriez être capable de relever ce
‫défi complètement par vous-même.
‫Alors, mettez la vidéo en pause maintenant et bonne chance.
‫Maintenant, d'accord, j'espère que vous n'avez pas simplement
‫ignoré ceci et que vous l'avez vraiment mis en œuvre par vous-même
‫et de toute façon, c'est ainsi que je l'ai créé.
‫Alors bien sûr, nous devons commencer par exiger la mangouste,
‫puis le
‫reviewSchema est égal à la nouvelle mangouste. Schéma.
‫Et commençons donc à ajouter nos champs.
‫Donc, d'abord, l'examen est bien sûr une chaîne.
‫Maintenant, c'est vrai et bien sûr, je le
‫fais trop vite, je dois donc également spécifier
‫le type, puis définissons-le également sur
‫une
‫valeur requise, vraie, la révision ne peut pas être vide.
‫Ensuite, nous voulons une cote,
‫et celle-ci est du type numéro.
‫Et la note est idéalement comprise entre un et cinq.
‫Et donc le minimum d'un et le maximum est de cinq.
‫Donc, comme vous
‫le savez déjà, ce sont quelques validateurs simples.
‫Cela ne fonctionne que pour les nombres, n'est-ce pas.
‫Ce n'est pas correct ici.
‫D'accord.
‫Ensuite, le createdAt.
‫Il s'agit du type, de la
‫date et par défaut, nous voulons
‫la date. maintenant.
‫D'accord.
‫C'était donc la partie facile.
‫Et créons également un modèle
‫et exportons-le avant d'ajouter ces références.
‫Donc const, Review est
‫égal trop mangouste. modèle avec le
‫nom Review.
‫Et puis bien sûr, reviewSchema.
‫Pour finir le module de cours. l'exportation
‫est égale à l'examen.
‫Très bien, et maintenant vient la partie de référence.
‫Ainsi, une critique doit bien sûr appartenir à une tournée.
‫Et il faut aussi un auteur.
‫D'accord.
‫C'est donc encore ce que nous avons
‫spécifié dans notre conférence sur la modélisation des données.
‫Donc, fondamentalement, nous allions
‫implémenter le référencement parent ici dans ce cas.
‫Parce que le tour et l'utilisateur sont en quelque
‫sorte les parents de cet ensemble de données.
‫Et nous avons décidé de procéder de
‫cette façon parce que nous
‫allons potentiellement effacer énormément tous les éléments parents, n'est-ce pas ?
‫Il ne faut donc pas concevoir notre
‫application en pensant qu'il n'y aura que quelques avis.
‫Seulement pour y revenir après un certain temps
‫et découvrir que nos hypothèses étaient fausses.
‫Et maintenant, nous devons reconstruire l'intégralité de notre modèle de données.
‫Ce serait donc terrible.
‫Ainsi, dans de nombreuses situations, comme vous savez déjà ce
‫que nous ne savons pas vraiment, à quel point notre effacement va grandir.
‫Alors mieux vaut opter pour le référencement parent.
‫Encore une fois, c'est exactement ce que nous faisons
‫ici lorsque nous faisons référence à la tournée et à l'utilisateur.
‫Alors maintenant, allons de l'avant et mettons cela en œuvre.
‫Et à commencer par la tournée.
‫Bien.
‫Donc ici, nous avons besoin d'espace, et d'accord.
‫Donc le type est comme nous le faisions avant, mangouste, et ce
‫n'est pas correct.
‫Donc mangouste. Schéma. ObjectId, avec un
‫O majuscule et un I majuscule, mais pas le D.
‫Et je vous
‫le dis juste parce que j'ai écrit une pièce d'identité
‫comme celle-ci, puis j'ai passé une demi-heure à essayer
‫de comprendre pourquoi mon application ne fonctionnait pas.
‫D'accord, donc ce D doit être en minuscule.
‫De toute façon.
‫La référence dans ce cas est bien sûr la tournée.
‫Et nous voulons également rendre cela obligatoire.
‫Tellement vrai et puis Review doit appartenir à
‫une tournée.
‫D'accord.
‫Et juste comme ça, chaque document Review sait
‫maintenant exactement à quelle tournée il appartient.
‫Bien que la tournée ne sache bien sûr
‫pas au départ quels avis et combien il y a d'avis.
‫Mais c'est un problème que
‫nous résoudrons en fait un peu plus tard.
‫D'accord.
‫Ensuite, quand il y a une critique, nous voulons non
‫seulement savoir à quelle tournée elle appartient, mais aussi
‫qui a écrit cette critique.
‫Donc
‫utilisateur, et encore, le même
‫type de mangouste. Schéma. ObjectId, et
‫cette
‫fois la référence, comme vous pouvez l'imaginer, sera user.
‫D'accord, et encore une fois, nous le
‫rendons obligatoire, car une critique ne peut vraiment
‫pas fonctionner sans un auteur.
‫Et donc l'avis
‫doit appartenir à un utilisateur.
‫D'accord, c'est en fait ça.
‫Bien.
‫Maintenant, pour terminer, ajoutons également ces options au
‫schéma où nous faisons en sorte que les propriétés virtuelles
‫apparaissent également dans les sorties Json et les objets.
‫D'accord.
‫Nous l'avons donc fait avant dans les tournées.
‫Je ne sais pas si nous l'avons fait dans le modèle utilisateur.
‫Mais de toute façon, ici, nous en aurons
‫vraiment besoin un peu plus tard.
‫Il faut donc le préciser.
‫Rappelez-vous, fondamentalement, ce que je veux dire,
‫c'est cette partie.
‫Je vais donc aller de l'avant et le copier.
‫Juste pour nous faire gagner du temps.
‫Et encore une fois, tout cela ne fait que s'assurer que lorsque
‫nous avons une propriété virtuelle, il s'agit
‫essentiellement d'un champ qui n'est pas stocké dans la base
‫de données mais calculé à l'aide d'une autre valeur.
‫Nous voulons donc que cela apparaisse également chaque fois qu'il y a une sortie.
‫Exact, et c'est ce que nous faisons ici.
‫D'accord.
‫Et donc je pense en fait que c'est en fait tout pour l'instant.
‫Très simple.
‫La seule partie un peu délicate est en fait de
‫créer ces références ici.
‫Mais nous l'avons déjà fait
‫auparavant et cela fonctionne donc exactement de la même manière.
‫Ainsi, dans la vidéo suivante, nous utiliserons
‫ensuite le schéma afin de créer de nouvelles critiques.
‫Alors à bientôt.