﻿1
00:00:00,980 --> 00:00:02,560
‫Narrateur : Dans cette

2
00:00:02,560 --> 00:00:05,490
‫vidéo, nous allons utiliser une astuce simple pour

3
00:00:05,490 --> 00:00:08,750
‫empêcher les utilisateurs d'écrire plusieurs critiques pour les mêmes visites,

4
00:00:08,750 --> 00:00:11,323
‫évitant ainsi essentiellement les critiques en double.

5
00:00:12,930 --> 00:00:16,140
‫Donc dans la dernière vidéo, nous avons créé toutes ces

6
00:00:16,140 --> 00:00:18,500
‫revues afin de calculer les moyennes.

7
00:00:18,500 --> 00:00:21,400
‫Et nous avons créé plusieurs avis pour une

8
00:00:21,400 --> 00:00:23,630
‫tournée, mais tous du même utilisateur.

9
00:00:23,630 --> 00:00:27,590
‫Mais en pratique, ça n'a pas beaucoup de sens, non ?

10
00:00:27,590 --> 00:00:29,700
‫Ainsi, dans le monde réel, chaque

11
00:00:29,700 --> 00:00:32,510
‫utilisateur ne devrait revoir chaque visite qu'une seule fois.

12
00:00:32,510 --> 00:00:35,670
‫Donc, fondamentalement, un avis en double se produit lorsqu'il y

13
00:00:35,670 --> 00:00:38,330
‫a un avis avec le même utilisateur et

14
00:00:38,330 --> 00:00:40,060
‫le même ID de tournée.

15
00:00:40,060 --> 00:00:43,580
‫Et c'est ce que nous voulons éviter de se produire.

16
00:00:43,580 --> 00:00:45,410
‫Et la solution évidente ici

17
00:00:45,410 --> 00:00:48,470
‫est d'utiliser simplement un index unique, n'est-ce pas ?

18
00:00:48,470 --> 00:00:50,780
‫Cependant, il ne suffit pas

19
00:00:50,780 --> 00:00:53,120
‫de définir ces deux champs sur uniques.

20
00:00:53,120 --> 00:00:55,770
‫Et en fait, ce serait vraiment faux,

21
00:00:55,770 --> 00:01:00,240
‫car cela signifierait que chaque visite ne peut obtenir qu'un avis et

22
00:01:00,240 --> 00:01:03,570
‫que chaque utilisateur ne peut écrire qu'un seul avis.

23
00:01:03,570 --> 00:01:06,150
‫Et évidemment ce n'est pas ce que nous voulons.

24
00:01:06,150 --> 00:01:09,900
‫Donc, ce dont nous avons besoin, c'est qu'ils soient tous les deux

25
00:01:09,900 --> 00:01:14,150
‫uniques, de sorte que la combinaison de l'utilisateur et de la tournée soit toujours unique.

26
00:01:14,150 --> 00:01:17,460
‫Cela semble donc un peu compliqué, mais heureusement pour

27
00:01:17,460 --> 00:01:21,170
‫nous, c'est en fait très facile à réaliser avec des index.

28
00:01:21,170 --> 00:01:24,860
‫Nous avons donc déjà créé un indice composé sur la tournée auparavant, et

29
00:01:24,860 --> 00:01:27,523
‫faisons maintenant la même chose ici sur les critiques.

30
00:01:28,660 --> 00:01:32,400
‫Encore une fois, juste ici après la définition du schéma, et

31
00:01:32,400 --> 00:01:36,513
‫bien sûr, nous sommes toujours dans le modèle de révision, n'est-ce pas ?

32
00:01:38,210 --> 00:01:41,450
‫Alors révisez, et ce n'est pas

33
00:01:41,450 --> 00:01:44,800
‫correct, alors révisez l'index de points du schéma...

34
00:01:47,740 --> 00:01:51,530
‫Tour fixé à un, et encore une fois ce n'est pas vraiment important si c'est

35
00:01:51,530 --> 00:01:53,563
‫un ou moins un dans ce cas.

36
00:01:55,310 --> 00:01:58,180
‫Et l'utilisateur a également défini sur un, d'accord.

37
00:01:58,180 --> 00:02:00,940
‫Et encore une fois, c'est similaire à ce

38
00:02:00,940 --> 00:02:03,980
‫que nous avons fait auparavant, mais ici, nous allons passer

39
00:02:03,980 --> 00:02:07,140
‫au niveau supérieur et ajouter maintenant un objet pour les options.

40
00:02:07,140 --> 00:02:10,109
‫Et l'option que nous allons définir ici est

41
00:02:10,109 --> 00:02:11,350
‫unique (saisie) définie

42
00:02:11,350 --> 00:02:12,373
‫sur true.

43
00:02:15,010 --> 00:02:16,240
‫Et c'est en fait ça.

44
00:02:16,240 --> 00:02:18,700
‫Cela permettra d'atteindre exactement ce que nous voulons.

45
00:02:18,700 --> 00:02:21,290
‫Alors maintenant, chaque combinaison de visite et d'utilisateur

46
00:02:21,290 --> 00:02:22,903
‫doit toujours être unique.

47
00:02:23,780 --> 00:02:26,050
‫Alors faisons une sauvegarde

48
00:02:26,050 --> 00:02:29,640
‫ici, ou deux, puis testons cela en fait.

49
00:02:29,640 --> 00:02:31,360
‫Maintenant, lorsque j'ai testé cela pour la

50
00:02:31,360 --> 00:02:33,550
‫première fois, cela n'a pas fonctionné tout de suite.

51
00:02:33,550 --> 00:02:36,530
‫Vraiment, ça n'a commencé à fonctionner que le lendemain, et je

52
00:02:36,530 --> 00:02:39,610
‫ne sais pas vraiment pourquoi, mais si cela vous arrive, alors

53
00:02:39,610 --> 00:02:41,910
‫ne vous inquiétez pas pour ça, d'accord.

54
00:02:41,910 --> 00:02:43,840
‫Et peut-être que cela pourrait même arriver

55
00:02:43,840 --> 00:02:45,240
‫maintenant que j'enregistre cette vidéo.

56
00:02:46,080 --> 00:02:49,970
‫Donc de toute façon, pour le moment, il ne devrait pas y avoir de critiques

57
00:02:49,970 --> 00:02:51,963
‫sur la tournée sur laquelle nous travaillions.

58
00:02:52,810 --> 00:02:57,110
‫Donc, juste pour nous assurer que nous avons toujours des

59
00:02:57,110 --> 00:03:01,010
‫notes nulles et que les critiques sont vides.

60
00:03:01,010 --> 00:03:02,840
‫Et donc créons à

61
00:03:02,840 --> 00:03:05,223
‫nouveau une nouvelle critique sur cette tournée.

62
00:03:06,720 --> 00:03:07,553
‫D'accord.

63
00:03:09,800 --> 00:03:13,490
‫Il s'agit donc d'un avis, donc d'un utilisateur et d'un avis.

64
00:03:13,490 --> 00:03:17,660
‫Donc, bien sûr, cela devrait fonctionner, mais si je l'envoie maintenant à nouveau

65
00:03:17,660 --> 00:03:22,000
‫et disons que je le mets à quatre et que je dis d'accord, alors

66
00:03:22,000 --> 00:03:25,290
‫cela ne devrait pas être autorisé à fonctionner, d'accord.

67
00:03:25,290 --> 00:03:27,310
‫Gardez juste à l'esprit que cela pourrait toujours

68
00:03:27,310 --> 00:03:30,170
‫fonctionner à cause du problème que je vous ai dit auparavant, d'accord.

69
00:03:30,170 --> 00:03:34,253
‫Parfois, ce type d'index n'est pas défini immédiatement.

70
00:03:35,850 --> 00:03:39,120
‫Oh, mais en fait, dans mon cas ici, cela a fonctionné tout de suite.

71
00:03:39,120 --> 00:03:43,307
‫Nous obtenons donc cette erreur de clé en double sur cet index ici,

72
00:03:43,307 --> 00:03:47,210
‫et c'est donc exactement l'index que nous venons de créer auparavant.

73
00:03:47,210 --> 00:03:50,063
‫Jetons donc un coup d'œil à cela également ici dans Compass.

74
00:03:52,090 --> 00:03:54,153
‫Donc ici, ce n'est pas le cas,

75
00:03:55,547 --> 00:03:57,970
‫et je vais donc le faire comme je l'ai

76
00:03:57,970 --> 00:03:59,873
‫fait avant et me reconnecter essentiellement.

77
00:04:04,210 --> 00:04:07,893
‫Alors allez aux récents, puis connectez-vous ici.

78
00:04:12,240 --> 00:04:13,360
‫Natours...

79
00:04:16,760 --> 00:04:17,593
‫Puis...

80
00:04:19,390 --> 00:04:20,453
‫Bien sûr les

81
00:04:21,520 --> 00:04:24,690
‫tournées, et nos index ici sont maintenant ces quatre-là.

82
00:04:24,690 --> 00:04:26,640
‫Et donc c'est celui que nous venons

83
00:04:26,640 --> 00:04:29,920
‫de créer, ou en fait ce n'est pas le cas (rires), d'accord.

84
00:04:29,920 --> 00:04:32,290
‫Donc, pour une raison quelconque, ce n'est pas ici,

85
00:04:32,290 --> 00:04:34,400
‫c'est donc ce que je disais plus tôt,

86
00:04:34,400 --> 00:04:38,083
‫mais cela ne vous dérange pas car en fait, cela fonctionne dans notre code.

87
00:04:39,840 --> 00:04:43,510
‫D'accord, nous n'avons donc pas pu créer deux avis

88
00:04:43,510 --> 00:04:46,220
‫provenant du même utilisateur, d'accord.

89
00:04:46,220 --> 00:04:48,480
‫Mais si vous vous connectez maintenant

90
00:04:48,480 --> 00:04:52,740
‫en tant que quelqu'un d'autre, eh bien, nous pourrons certainement publier cet avis.

91
00:04:52,740 --> 00:04:55,530
‫Voyons donc quel utilisateur nous pourrions utiliser maintenant.

92
00:04:55,530 --> 00:04:58,973
‫Alors rassemblons tous les utilisateurs ici, ce que je ne

93
00:05:01,160 --> 00:05:04,970
‫peux pas parce que je ne suis pas un administrateur (rires), d'accord.

94
00:05:04,970 --> 00:05:07,070
‫J'ai donc oublié cette partie,

95
00:05:07,070 --> 00:05:10,500
‫et je vais donc simplement la récupérer dans Compass.

96
00:05:10,500 --> 00:05:12,003
‫Parfois, c'est juste plus facile.

97
00:05:13,230 --> 00:05:15,410
‫C'est donc un guide, un

98
00:05:15,410 --> 00:05:19,443
‫utilisateur (s'exclame), alors utilisons simplement cet Eduardo ici ou quelque chose.

99
00:05:22,120 --> 00:05:26,943
‫Alors connectons-nous en tant que cette personne, en tant que cet utilisateur.

100
00:05:31,120 --> 00:05:34,270
‫Oui, avec succès, et maintenant nous devrions

101
00:05:34,270 --> 00:05:39,000
‫être autorisés à créer une critique, et en effet, la voici, d'accord.

102
00:05:39,000 --> 00:05:40,483
‫Et si nous

103
00:05:41,720 --> 00:05:45,970
‫mettons maintenant cela à jour, alors nous avons nos deux notes, super.

104
00:05:45,970 --> 00:05:48,620
‫Maintenant, testez-le à nouveau, donc si nous l'envoyons

105
00:05:48,620 --> 00:05:51,510
‫à nouveau, cela ne fonctionnera pas car, encore une fois,

106
00:05:51,510 --> 00:05:53,530
‫nous avons une erreur en double.

107
00:05:53,530 --> 00:05:54,640
‫Impressionnant.

108
00:05:54,640 --> 00:05:57,110
‫Il y a juste une autre chose

109
00:05:57,110 --> 00:06:00,693
‫que je voulais vous montrer, et donc pour cela, je vais me

110
00:06:03,040 --> 00:06:07,300
‫connecter en tant qu'autre personne, d'accord, afin que je puisse ensuite créer une autre critique.

111
00:06:07,300 --> 00:06:10,523
‫Alors cette fois, je serai ce Max Smith.

112
00:06:12,150 --> 00:06:14,203
‫Et donc connectons-nous.

113
00:06:17,140 --> 00:06:18,420
‫(clics de

114
00:06:18,420 --> 00:06:21,350
‫souris) Bon, maintenant je suis officiellement Max,

115
00:06:21,350 --> 00:06:23,973
‫et je pourrai poster cette critique.

116
00:06:27,500 --> 00:06:28,453
‫Donc avec cinq,

117
00:06:30,840 --> 00:06:32,210
‫je suis capable de faire

118
00:06:32,210 --> 00:06:35,123
‫ça, et maintenant je veux jeter un œil à la moyenne.

119
00:06:36,080 --> 00:06:40,660
‫Bon, maintenant c'est ce 4. 6666, ce qui bien

120
00:06:40,660 --> 00:06:43,040
‫sûr n'a pas l'air bien.

121
00:06:43,040 --> 00:06:45,090
‫Et nous pourrions résoudre ce problème en amont.

122
00:06:45,090 --> 00:06:47,330
‫Par exemple, lorsque nous demandons ces données à

123
00:06:47,330 --> 00:06:49,490
‫l'API et que nous les affichons,

124
00:06:49,490 --> 00:06:52,010
‫nous pourrions ensuite effectuer cet arrondi sur le front-end.

125
00:06:52,010 --> 00:06:55,260
‫Mais en fait, je veux le faire ici même sur le

126
00:06:55,260 --> 00:06:59,250
‫back-end afin que l'utilisateur final obtienne déjà cette valeur arrondie finale, qui dans

127
00:06:59,250 --> 00:07:02,980
‫ce cas serait de 4. 7, non ?

128
00:07:02,980 --> 00:07:06,340
‫Et pour cela, je vais vous montrer une petite nouveauté

129
00:07:06,340 --> 00:07:09,230
‫dans Mongoose que nous n'avons pas encore utilisée.

130
00:07:09,230 --> 00:07:12,323
‫Passons donc à notre modèle de tournée,

131
00:07:13,220 --> 00:07:15,070
‫et à cette moyenne,

132
00:07:15,070 --> 00:07:16,410
‫donc ici.

133
00:07:16,410 --> 00:07:19,132
‫Et maintenant, nous pouvons utiliser une fonction setter.

134
00:07:19,132 --> 00:07:21,100
‫(en tapant) Donc défini

135
00:07:21,100 --> 00:07:24,070
‫et cette fonction sera exécutée chaque fois qu'une

136
00:07:24,070 --> 00:07:27,257
‫nouvelle valeur est définie pour ce champ, d'accord.

137
00:07:27,257 --> 00:07:31,180
‫Et donc ici, nous spécifions généralement une fonction de rappel, qui

138
00:07:31,180 --> 00:07:33,003
‫reçoit la valeur actuelle.

139
00:07:34,570 --> 00:07:37,610
‫Et dans ce cas, il renvoie essentiellement cette valeur,

140
00:07:37,610 --> 00:07:38,533
‫mais arrondie.

141
00:07:39,760 --> 00:07:44,760
‫Nous utilisons donc l'arrondi par points mathématiques pour la valeur actuelle, mais le problème

142
00:07:46,040 --> 00:07:48,610
‫avec l'arrondi par points mathématiques est

143
00:07:48,610 --> 00:07:51,240
‫qu'il arrondit les valeurs à des nombres entiers.

144
00:07:51,240 --> 00:07:54,253
‫Donc, par exemple, si nous avions quelque

145
00:07:55,412 --> 00:07:58,830
‫chose comme ça, cela arrondirait alors à cinq, d'accord.

146
00:07:58,830 --> 00:08:00,410
‫Et ce n'est pas ce que nous voulons.

147
00:08:00,410 --> 00:08:03,610
‫Nous voulons qu'il soit arrondi à 4. 7.

148
00:08:03,610 --> 00:08:05,310
‫Et donc nous allons

149
00:08:05,310 --> 00:08:10,037
‫utiliser une astuce ici, qui est assez courante, donc en multipliant cela par 10, et

150
00:08:10,037 --> 00:08:13,647
‫donc avec cela, nous obtiendrions 46. 666, et

151
00:08:14,580 --> 00:08:17,960
‫alors cet arrondi serait 47.

152
00:08:17,960 --> 00:08:21,120
‫Et donc, nous divisons à nouveau les résultats par 10, et cela

153
00:08:21,120 --> 00:08:22,810
‫fait alors 4. 7.

154
00:08:26,470 --> 00:08:29,180
‫Très bien, et c'est en fait tout.

155
00:08:29,180 --> 00:08:31,790
‫Encore une fois, une fonction de réglage ici qui

156
00:08:31,790 --> 00:08:34,710
‫va être exécutée chaque fois qu'il y a une nouvelle valeur

157
00:08:34,710 --> 00:08:36,903
‫pour le champ de moyenne des notes.

158
00:08:38,640 --> 00:08:42,650
‫Donc, juste pour tester cela, mettons simplement à jour cette

159
00:08:42,650 --> 00:08:45,743
‫dernière critique que nous avons ajoutée, qui avait

160
00:08:49,080 --> 00:08:52,030
‫un cinq, et gardons-la à cinq.

161
00:08:52,030 --> 00:08:54,830
‫Donc, tout ce que nous voulons faire, c'est

162
00:08:54,830 --> 00:08:57,283
‫réexécuter cette fonction qui crée cette moyenne.

163
00:08:59,490 --> 00:09:02,910
‫Donc, si je fais ça maintenant et maintenant ma tournée, nous

164
00:09:02,910 --> 00:09:05,853
‫devrions en avoir 4. 7 ici comme moyenne.

165
00:09:06,780 --> 00:09:09,620
‫Et oui, on y va.

166
00:09:09,620 --> 00:09:13,210
‫Super, et c'est déjà tout pour cette vidéo.

167
00:09:13,210 --> 00:09:15,940
‫Nous avons donc créé cette fonction de setter

168
00:09:15,940 --> 00:09:18,940
‫agréable, et nous avons créé cet index composé unique

169
00:09:18,940 --> 00:09:21,000
‫ici afin de garantir qu'un utilisateur

170
00:09:21,000 --> 00:09:24,053
‫ne peut pas écrire plusieurs critiques pour la même tournée.

