﻿1
00:00:01,300 --> 00:00:03,180
‫Instructeur : Vous vous souvenez de la façon

2
00:00:03,180 --> 00:00:06,500
‫dont nous avons un champ pour la note moyenne sur chaque document de visite ?

3
00:00:06,500 --> 00:00:09,860
‫Jusqu'à présent, ce champ ne contient pas vraiment de

4
00:00:09,860 --> 00:00:12,110
‫données significatives, n'est-ce pas ?

5
00:00:12,110 --> 00:00:14,290
‫Mais changeons maintenant cela et

6
00:00:14,290 --> 00:00:17,233
‫calculons les notes moyennes dans cette conférence.

7
00:00:18,920 --> 00:00:22,410
‫Ainsi, le stockage d'un résumé d'un ensemble de données associé

8
00:00:22,410 --> 00:00:26,270
‫sur l'ensemble de données principal est en fait une technique très populaire

9
00:00:26,270 --> 00:00:29,900
‫dans la modélisation de données que je n'avais pas encore mentionnée.

10
00:00:29,900 --> 00:00:32,720
‫Et cette technique peut en fait être très

11
00:00:32,720 --> 00:00:34,750
‫utile afin d'éviter des requêtes

12
00:00:34,750 --> 00:00:36,890
‫constantes sur l'ensemble de données associé.

13
00:00:36,890 --> 00:00:40,110
‫Ainsi, dans notre application, un excellent exemple de cette technique

14
00:00:40,110 --> 00:00:43,320
‫consiste à stocker la note moyenne et le nombre de

15
00:00:43,320 --> 00:00:46,870
‫notes sur chaque visite, afin que nous n'ayons pas à interroger les

16
00:00:46,870 --> 00:00:49,860
‫critiques et à calculer cette moyenne chaque fois que nous

17
00:00:49,860 --> 00:00:52,150
‫interrogeons pour toutes les visites, d'accord.

18
00:00:52,150 --> 00:00:54,380
‫Par exemple, cela pourrait devenir très

19
00:00:54,380 --> 00:00:57,280
‫utile pour une page d'aperçu de la tournée dans notre

20
00:00:57,280 --> 00:01:00,320
‫front-end où nous ne voulons vraiment pas afficher toutes les

21
00:01:00,320 --> 00:01:03,350
‫critiques, mais voulons quand même afficher un résumé de ces

22
00:01:03,350 --> 00:01:06,730
‫critiques, comme par exemple, le nombre de notes et la moyenne.

23
00:01:06,730 --> 00:01:09,130
‫Et en fait, nous avons déjà les champs pour cela

24
00:01:09,130 --> 00:01:10,433
‫dans notre schéma de tournée.

25
00:01:11,450 --> 00:01:15,870
‫Donc juste ici au début, je pense.

26
00:01:15,870 --> 00:01:17,660
‫Oui, nous avons donc la

27
00:01:17,660 --> 00:01:19,760
‫moyenne des notes et le nombre de

28
00:01:19,760 --> 00:01:22,380
‫notes ici, mais pour le moment ce ne sont

29
00:01:22,380 --> 00:01:25,307
‫que quelques chiffres et bien sûr, ce ne sont pas

30
00:01:25,307 --> 00:01:27,560
‫la moyenne réelle et le nombre de notes,

31
00:01:27,560 --> 00:01:30,840
‫car nous n'avons jamais vraiment calculé cela à aucun moment dans notre

32
00:01:30,840 --> 00:01:34,290
‫application, mais c'est exactement ce que nous allons changer dans cette vidéo.

33
00:01:34,290 --> 00:01:37,370
‫Alors maintenant, nous allons calculer la note moyenne et

34
00:01:37,370 --> 00:01:39,750
‫aussi le nombre de notes d'une tournée

35
00:01:39,750 --> 00:01:43,330
‫à chaque fois qu'une nouvelle critique est ajoutée à cette

36
00:01:43,330 --> 00:01:47,000
‫tournée ou aussi lorsqu'une critique est mise à jour ou supprimée,

37
00:01:47,000 --> 00:01:49,230
‫car c'est exactement les situations

38
00:01:49,230 --> 00:01:52,830
‫où le nombre ou la moyenne pourrait changer, à droite.

39
00:01:52,830 --> 00:01:55,920
‫Alors, comment allons-nous réellement mettre en œuvre cela?

40
00:01:55,920 --> 00:01:58,800
‫Eh bien, ici, dans le modèle de révision, nous

41
00:01:58,800 --> 00:02:00,620
‫allons créer une nouvelle fonction

42
00:02:00,620 --> 00:02:02,690
‫qui prendra en compte un identifiant

43
00:02:02,690 --> 00:02:05,690
‫de tournée et calculera la note moyenne et le

44
00:02:05,690 --> 00:02:09,410
‫nombre de notes qui existent dans notre collection pour cette tournée exacte.

45
00:02:09,410 --> 00:02:11,880
‫Ensuite, à la fin, la fonction mettra même à

46
00:02:11,880 --> 00:02:14,020
‫jour le document de visite correspondant.

47
00:02:14,020 --> 00:02:16,360
‫Ensuite, afin d'utiliser cette fonction, nous utiliserons

48
00:02:16,360 --> 00:02:19,510
‫un middleware pour appeler cette fonction chaque fois qu'il

49
00:02:19,510 --> 00:02:22,650
‫y a une nouvelle révision ou qu'une est mise

50
00:02:22,650 --> 00:02:24,980
‫à jour ou supprimée, d'accord.

51
00:02:24,980 --> 00:02:28,030
‫Commençons donc maintenant par écrire cette fonction et pour

52
00:02:28,030 --> 00:02:31,370
‫cela, nous allons en fait écrire une méthode statique sur

53
00:02:31,370 --> 00:02:34,510
‫notre schéma, et c'est une fonctionnalité de Mongoose que

54
00:02:34,510 --> 00:02:36,580
‫nous n'avions pas encore utilisée.

55
00:02:36,580 --> 00:02:38,630
‫Nous n'avons donc utilisé que des méthodes

56
00:02:38,630 --> 00:02:40,500
‫d'instance, que nous pouvons appeler sur

57
00:02:40,500 --> 00:02:42,050
‫des documents et elles

58
00:02:42,050 --> 00:02:46,090
‫sont aussi très utiles, mais cette fois nous allons vraiment utiliser des méthodes statiques.

59
00:02:46,090 --> 00:02:46,923
‫D'accord.

60
00:02:47,850 --> 00:02:51,330
‫Encore une fois, ceux-ci peuvent être appelés directement sur le modèle,

61
00:02:51,330 --> 00:02:59,520
‫par exemple, comme cette revue. calcStats, d'accord.

62
00:02:59,520 --> 00:03:04,350
‫Et la façon dont cela fonctionne est bien sûr

63
00:03:04,350 --> 00:03:09,323
‫reviewSchema et ensuite . statique, puis le nom de la fonction.

64
00:03:10,490 --> 00:03:11,540
‫Donc calcAverageRatings

65
00:03:18,360 --> 00:03:22,143
‫est égal à une fonction, qui mémorise un ID de tournée,

66
00:03:24,800 --> 00:03:27,180
‫et cet ID est bien sûr pour

67
00:03:27,180 --> 00:03:29,670
‫la tournée à laquelle appartient l'examen en cours.

68
00:03:29,670 --> 00:03:32,790
‫Et je sais qu'à ce stade, tout cela semble probablement un peu

69
00:03:32,790 --> 00:03:35,000
‫déroutant, mais ne vous inquiétez pas une fois

70
00:03:35,000 --> 00:03:36,720
‫que tout cela aura été mis

71
00:03:36,720 --> 00:03:38,380
‫en œuvre et que lorsque

72
00:03:38,380 --> 00:03:42,080
‫nous le testerons, cela aura alors beaucoup de sens dans la pratique, d'accord ?

73
00:03:42,080 --> 00:03:45,120
‫Quoi qu'il en soit, pour faire maintenant le

74
00:03:45,120 --> 00:03:48,470
‫calcul, nous utiliserons à nouveau le pipeline d'agrégation, à droite.

75
00:03:48,470 --> 00:03:53,470
‫Souvenons-nous donc que dans notre contrôleur d'outils, nous utilisons

76
00:03:53,970 --> 00:03:56,990
‫ici le pipeline d'agrégation pour

77
00:03:56,990 --> 00:04:00,730
‫créer également des statistiques comme celle-ci, d'accord.

78
00:04:00,730 --> 00:04:04,560
‫Nous avons donc utilisé la méthode agrégée, que nous avons appelée

79
00:04:04,560 --> 00:04:06,670
‫directement sur le modèle, d'accord.

80
00:04:06,670 --> 00:04:09,080
‫Alors maintenant, dans notre méthode d'instance, nous pouvons faire

81
00:04:09,080 --> 00:04:10,393
‫exactement la même chose.

82
00:04:12,140 --> 00:04:15,690
‫Ainsi, dans une méthode statique comme celle-ci, ces mots-clés pointent

83
00:04:15,690 --> 00:04:18,130
‫en fait vers le modèle actuel.

84
00:04:18,130 --> 00:04:20,623
‫C'est pourquoi nous pouvons l'utiliser. agrégé, car rappelez-vous

85
00:04:22,160 --> 00:04:25,100
‫que nous devons appeler cela. agréger directement sur

86
00:04:25,100 --> 00:04:27,470
‫le modèle, et c'est exactement pourquoi

87
00:04:27,470 --> 00:04:30,970
‫nous utilisons ici une méthode statique en premier lieu.

88
00:04:30,970 --> 00:04:33,690
‫Parce qu'à nouveau, cela pointe maintenant vers

89
00:04:33,690 --> 00:04:38,200
‫le modèle et nous devons toujours appeler l'agrégat sur le modèle, d'accord.

90
00:04:38,200 --> 00:04:41,610
‫Donc, dans l'agrégat, nous devons passer un tableau

91
00:04:41,610 --> 00:04:45,850
‫de toutes les étapes que nous voulons dans l'ensemble, d'accord.

92
00:04:45,850 --> 00:04:47,930
‫Alors, que voulons-nous faire en premier ?

93
00:04:47,930 --> 00:04:51,930
‫Eh bien, la première étape devrait être de sélectionner toutes les critiques

94
00:04:51,930 --> 00:04:54,280
‫qui appartiennent réellement à la tournée

95
00:04:54,280 --> 00:04:57,470
‫en cours et qui ont été transmises comme argument.

96
00:04:57,470 --> 00:04:58,790
‫D'accord.

97
00:04:58,790 --> 00:05:02,093
‫Donc, notre première étape est une étape de correspondance, souvenez-vous de

98
00:05:03,090 --> 00:05:03,933
‫cela, et

99
00:05:05,360 --> 00:05:07,580
‫donc ici nous avons passé notre objet

100
00:05:08,620 --> 00:05:11,420
‫de filtre et nous pouvons dire tour égal à

101
00:05:11,420 --> 00:05:13,740
‫tour, mais nous n'en avons pas vraiment

102
00:05:13,740 --> 00:05:17,950
‫besoin, comme vous le savez déjà, et donc supprimons simplement ceci partie, ou en

103
00:05:17,950 --> 00:05:20,670
‫fait juste pour le rendre un peu moins confus

104
00:05:20,670 --> 00:05:24,290
‫ici avec les noms, appelons celui-ci ici l'identifiant de la tournée, d'accord.

105
00:05:24,290 --> 00:05:26,620
‫Alors tourId ici,

106
00:05:26,620 --> 00:05:27,480
‫d'accord.

107
00:05:27,480 --> 00:05:29,510
‫Donc, comme ça, nous sélectionnons

108
00:05:29,510 --> 00:05:33,330
‫uniquement une tournée que nous voulons réellement mettre à jour, d'accord.

109
00:05:33,330 --> 00:05:35,740
‫Maintenant, dans l'étape suivante, calculons en

110
00:05:35,740 --> 00:05:37,930
‫fait les statistiques elles-mêmes, et

111
00:05:37,930 --> 00:05:41,033
‫pour cela, nous utilisons une étape de groupe.

112
00:05:42,920 --> 00:05:44,900
‫Et dans la phase de groupe,

113
00:05:44,900 --> 00:05:49,900
‫rappelez-vous que le premier champ que nous devons spécifier est l'ID, donc _id, puis le

114
00:05:50,240 --> 00:05:51,740
‫champ commun que tous

115
00:05:51,740 --> 00:05:53,570
‫les documents ont en commun et

116
00:05:53,570 --> 00:05:56,200
‫que nous voulons regrouper et ce sera à

117
00:05:56,200 --> 00:05:57,543
‫nouveau la tournée.

118
00:06:00,230 --> 00:06:04,460
‫Donc, tout comme dans notre exemple de calcul statistique précédent,

119
00:06:04,460 --> 00:06:07,310
‫nous avons regroupé ici par difficulté.

120
00:06:07,310 --> 00:06:10,250
‫Ainsi, nous calculons les statistiques pour les circuits faciles et

121
00:06:10,250 --> 00:06:11,840
‫les statistiques pour les

122
00:06:11,840 --> 00:06:14,560
‫circuits moyens, puis les statistiques pour les circuits difficiles.

123
00:06:14,560 --> 00:06:17,140
‫Donc, dans cet exemple, nous avons regroupé toutes

124
00:06:17,140 --> 00:06:18,453
‫les visites par difficulté,

125
00:06:19,450 --> 00:06:20,283
‫d'accord.

126
00:06:20,283 --> 00:06:22,810
‫Mais ici, bien sûr, nous regroupons toutes les tournées

127
00:06:22,810 --> 00:06:23,663
‫par tournée.

128
00:06:25,440 --> 00:06:26,273
‫Super.

129
00:06:26,273 --> 00:06:28,023
‫Maintenant, le nombre d'évaluations, rappelez-vous comment

130
00:06:31,290 --> 00:06:32,653
‫nous procédons, donc

131
00:06:33,690 --> 00:06:35,970
‫tout ce que nous faisons est d'en

132
00:06:35,970 --> 00:06:37,970
‫ajouter une pour chaque tournée que

133
00:06:37,970 --> 00:06:41,570
‫nous avons, donc chaque tournée qui correspond à l'étape précédente, d'accord.

134
00:06:41,570 --> 00:06:44,810
‫Donc, s'il y a cinq documents de révision pour la

135
00:06:44,810 --> 00:06:48,310
‫tournée en cours, un sera ajouté pour chacun de ces documents.

136
00:06:48,310 --> 00:06:51,310
‫Donc, à la fin, le nombre de notes sera de

137
00:06:51,310 --> 00:06:55,130
‫cinq, et encore une fois, car bien sûr, nous avons cinq documents d'examen.

138
00:06:55,130 --> 00:06:57,083
‫Alors ça a du sens, non ?

139
00:06:58,532 --> 00:07:03,532
‫Puis aussi la note moyenne, qui, comme avant, nous utilisons l'opérateur

140
00:07:03,970 --> 00:07:08,970
‫moyen et cela doit être à l'intérieur d'un objet et

141
00:07:09,180 --> 00:07:10,013
‫ici

142
00:07:12,490 --> 00:07:14,440
‫le nom du champ

143
00:07:15,470 --> 00:07:18,330
‫qui est la note, à droite.

144
00:07:18,330 --> 00:07:22,180
‫Souvenez-vous donc que chaque avis a un champ d'évaluation.

145
00:07:22,180 --> 00:07:24,993
‫C'est donc de là que nous voulons calculer la moyenne.

146
00:07:27,720 --> 00:07:30,350
‫D'accord, et c'est en fait tout.

147
00:07:30,350 --> 00:07:32,950
‫Le nombre et la moyenne des notes

148
00:07:32,950 --> 00:07:36,790
‫sont donc exactement ce que nous voulions calculer dans cette agrégation.

149
00:07:36,790 --> 00:07:39,740
‫Maintenant, gardez à l'esprit que cela renvoie en

150
00:07:39,740 --> 00:07:43,290
‫fait une promesse et nous devons donc l'attendre, puis la

151
00:07:43,290 --> 00:07:46,193
‫stocker dans une variable appelée stats.

152
00:07:49,070 --> 00:07:49,980
‫D'accord.

153
00:07:49,980 --> 00:07:53,023
‫Ensuite, marquez celui-ci ici comme asynchrone,

154
00:07:54,600 --> 00:07:55,620
‫sauvegardez-le

155
00:07:55,620 --> 00:07:59,790
‫et nous devons maintenant utiliser cette variable de statistiques.

156
00:07:59,790 --> 00:08:02,930
‫Pour l'instant, tout ce que je veux vraiment faire

157
00:08:02,930 --> 00:08:06,073
‫pour tester cela, c'est d'enregistrer les statistiques sur la console.

158
00:08:08,120 --> 00:08:09,090
‫Console. statistiques

159
00:08:10,600 --> 00:08:11,433
‫de journal.

160
00:08:13,640 --> 00:08:16,880
‫D'accord, alors dans l'étape ultérieure, nous voudrons réellement, comme je l'ai

161
00:08:16,880 --> 00:08:19,950
‫mentionné auparavant, mettre à jour le document de la tournée

162
00:08:19,950 --> 00:08:21,770
‫avec ces statistiques, mais je

163
00:08:21,770 --> 00:08:23,930
‫vais laisser cela un peu plus tard,

164
00:08:23,930 --> 00:08:26,070
‫car pour l'instant, nous devons en

165
00:08:26,070 --> 00:08:28,390
‫fait appeler cette méthode ici quelque part ,

166
00:08:28,390 --> 00:08:31,133
‫car sinon les statistiques ici ne seront jamais appelées.

167
00:08:32,100 --> 00:08:33,863
‫Et rappelez-vous comment nous avons dit

168
00:08:33,863 --> 00:08:36,160
‫au début que nous le ferions en utilisant

169
00:08:36,160 --> 00:08:38,523
‫un middleware chaque fois qu'un nouvel avis est créé.

170
00:08:40,050 --> 00:08:44,250
‫Implémentons donc cela en utilisant reviewSchema pre save,

171
00:08:45,330 --> 00:08:46,163
‫puis

172
00:08:50,680 --> 00:08:54,563
‫notre fonction middleware normale normale ici.

173
00:08:55,860 --> 00:08:57,873
‫Et rappelez-vous que dans ce

174
00:08:57,873 --> 00:09:00,093
‫type de middleware, ce mot-clé pointe

175
00:09:00,093 --> 00:09:02,210
‫vers le document en cours d'enregistrement.

176
00:09:02,210 --> 00:09:04,760
‫Donc, cela pointe vers

177
00:09:06,540 --> 00:09:08,850
‫l'examen actuel, d'accord.

178
00:09:08,850 --> 00:09:11,880
‫Nous voudrons donc appeler la fonction calcAverageRating

179
00:09:11,880 --> 00:09:15,020
‫en utilisant ceci. tournée, à droite.

180
00:09:15,020 --> 00:09:18,770
‫Maintenant, comment allons-nous réellement appeler cette fonction ?

181
00:09:18,770 --> 00:09:19,940
‫Rappelez-vous comment j'ai

182
00:09:19,940 --> 00:09:22,470
‫dit que cette fonction est disponible sur le modèle.

183
00:09:22,470 --> 00:09:25,050
‫Donc, fondamentalement, comme cette critique

184
00:09:25,050 --> 00:09:27,390
‫de mise. calcAverageRatings, puis, comme

185
00:09:29,557 --> 00:09:35,173
‫je l'ai dit, nous voulons l'utiliser. tournée, d'accord.

186
00:09:35,173 --> 00:09:37,240
‫Et encore une fois, parce qu'il s'agit de

187
00:09:37,240 --> 00:09:40,340
‫l'examen en cours et que c'est alors l'ID de tournée que nous

188
00:09:40,340 --> 00:09:42,143
‫allons transmettre à l'intérieur de calcAverageRatings.

189
00:09:43,640 --> 00:09:46,950
‫Maintenant, le problème est qu'à ce stade du code,

190
00:09:46,950 --> 00:09:50,200
‫la variable de révision n'est pas encore définie.

191
00:09:50,200 --> 00:09:53,340
‫Maintenant, vous pourriez penser que la solution simple serait

192
00:09:53,340 --> 00:09:57,780
‫de simplement déplacer ce code ici après cette déclaration de révision, mais malheureusement,

193
00:09:57,780 --> 00:10:00,480
‫cela ne fonctionnera pas, car tout comme

194
00:10:00,480 --> 00:10:03,630
‫dans Express, ce code ici s'exécute essentiellement dans l'ordre

195
00:10:03,630 --> 00:10:05,730
‫dans lequel il est déclaré.

196
00:10:05,730 --> 00:10:08,100
‫Donc, si nous devions mettre ce code

197
00:10:08,100 --> 00:10:11,550
‫ici après la déclaration de révision, alors ce reviewSchema ici

198
00:10:11,550 --> 00:10:13,810
‫ne contiendrait pas ce middleware, car

199
00:10:13,810 --> 00:10:16,050
‫nous ne le déclarerions alors qu'une

200
00:10:16,050 --> 00:10:19,750
‫fois le modèle de révision déjà créé, d'accord, mais il y

201
00:10:19,750 --> 00:10:23,160
‫a heureusement encore un moyen de contourner cela et

202
00:10:23,160 --> 00:10:26,273
‫c'est d'utiliser ceci. constructeur.

203
00:10:28,970 --> 00:10:31,640
‫Donc ceci ici pointe toujours vers le modèle.

204
00:10:31,640 --> 00:10:35,267
‫Vous savez, encore une fois, il s'agit du document actuel

205
00:10:35,267 --> 00:10:38,030
‫et le constructeur est essentiellement le modèle

206
00:10:38,030 --> 00:10:40,470
‫qui a créé ce document.

207
00:10:40,470 --> 00:10:42,410
‫Donc, ici, cela représente la

208
00:10:42,410 --> 00:10:45,823
‫tournée et nous pouvons donc simplement le faire comme ça.

209
00:10:47,420 --> 00:10:52,043
‫Ensuite, appelez le suivant comme toujours et c'est tout.

210
00:10:54,130 --> 00:10:57,320
‫Alors allons-y maintenant et testons cela.

211
00:10:57,320 --> 00:11:00,500
‫Et pour ce faire, je vais d'abord créer une nouvelle

212
00:11:00,500 --> 00:11:02,670
‫tournée, car les autres que nous avons

213
00:11:02,670 --> 00:11:04,620
‫déjà ont la moyenne et

214
00:11:04,620 --> 00:11:06,730
‫le nombre d'évaluations déjà calculés et

215
00:11:06,730 --> 00:11:10,240
‫nous voulons donc vraiment repartir de zéro ici pour tester cela.

216
00:11:10,240 --> 00:11:13,270
‫Donc, pour créer une nouvelle tournée, nous devons être connectés

217
00:11:13,270 --> 00:11:16,840
‫en tant qu'administrateurs, et je pense que nous le sommes actuellement, mais

218
00:11:16,840 --> 00:11:18,940
‫juste pour être sûr de recommencer.

219
00:11:20,400 --> 00:11:21,233
‫D'accord.

220
00:11:22,660 --> 00:11:24,981
‫Voici donc la nouvelle tournée d'essai.

221
00:11:24,981 --> 00:11:28,313
‫Très bien, supprimons-les ici, ils ne sont pas obligatoires, et je

222
00:11:30,120 --> 00:11:32,663
‫pense qu'avec cela, nous sommes prêts à partir.

223
00:11:36,950 --> 00:11:40,580
‫Très bien, et ici vous voyez les valeurs par défaut que nous

224
00:11:40,580 --> 00:11:43,130
‫avons définies auparavant, donc la moyenne des

225
00:11:43,130 --> 00:11:46,430
‫notes est de cinq et la quantité définie à zéro, d'accord.

226
00:11:46,430 --> 00:11:49,630
‫Maintenant, afin de créer un nouvel avis, nous devons en

227
00:11:49,630 --> 00:11:52,560
‫fait être connectés en tant qu'utilisateur régulier, et

228
00:11:52,560 --> 00:11:54,033
‫non en tant qu'administrateur.

229
00:11:54,900 --> 00:11:58,900
‫Alors, disons un utilisateur normal.

230
00:11:58,900 --> 00:12:02,120
‫Alors utilisons simplement cette Laura ici.

231
00:12:02,120 --> 00:12:03,470
‫Alors Laura@exemple. com et

232
00:12:04,804 --> 00:12:08,063
‫comme je l'ai mentionné plus tôt, le mot de passe est toujours le même.

233
00:12:12,000 --> 00:12:16,773
‫Alors faisons-le et maintenant nous allons créer une nouvelle critique en tournée.

234
00:12:17,920 --> 00:12:21,103
‫Alors maintenant, récupérons la visite que nous avons

235
00:12:22,890 --> 00:12:26,653
‫créée plus tôt, donc cet identifiant et mettez-le ici dans l'URL.

236
00:12:27,880 --> 00:12:30,490
‫D'accord, et rappelez-vous que cet itinéraire obtient

237
00:12:30,490 --> 00:12:33,877
‫désormais automatiquement un identifiant de tournée à partir de

238
00:12:33,877 --> 00:12:37,413
‫l'URL et un identifiant d'utilisateur de l'utilisateur actuellement connecté,

239
00:12:38,730 --> 00:12:39,563
‫d'accord.

240
00:12:39,563 --> 00:12:42,063
‫Alors utilisons celui-ci comme première note,

241
00:12:44,490 --> 00:12:48,643
‫envoyons-le, et maintenant je veux jeter un œil à notre console.

242
00:12:50,060 --> 00:12:53,230
‫Nous avons une sortie ici, mais pour une raison quelconque,

243
00:12:53,230 --> 00:12:55,260
‫c'est seulement comme ce tableau vide.

244
00:12:55,260 --> 00:12:58,010
‫Donc quelque chose ne doit pas fonctionner ici.

245
00:12:58,010 --> 00:13:02,400
‫Jetons donc un coup d'œil à l'ID de la tournée ici juste

246
00:13:02,400 --> 00:13:07,200
‫pour nous assurer que nous obtenons la bonne valeur ici, ID et commentons

247
00:13:07,200 --> 00:13:09,340
‫également cette partie ici juste

248
00:13:10,210 --> 00:13:14,220
‫pour voir s'il y a peut-être une erreur dans cette

249
00:13:14,220 --> 00:13:17,360
‫partie, et alors essayons maintenant encore une fois.

250
00:13:17,360 --> 00:13:20,113
‫Je vais simplement ajouter le même ici à nouveau, d'accord.

251
00:13:23,680 --> 00:13:26,453
‫D'accord, alors maintenant, nous obtenons quelque chose.

252
00:13:27,310 --> 00:13:29,790
‫Nous avons donc cette revue qui est

253
00:13:29,790 --> 00:13:32,210
‫celle que nous avons créée initialement.

254
00:13:32,210 --> 00:13:34,900
‫Donc ça commence par cet ac15,

255
00:13:34,900 --> 00:13:39,623
‫mais celui que je viens de créer est ce 66d, d'accord.

256
00:13:39,623 --> 00:13:44,223
‫Jetons donc un œil à cela ici dans Compass.

257
00:13:45,490 --> 00:13:47,223
‫Nous devons donc aller à la dernière page.

258
00:13:49,380 --> 00:13:52,450
‫D'accord, et donc celui qui apparaît dans notre console

259
00:13:52,450 --> 00:13:55,270
‫n'est que celui-ci ici, mais pas le deuxième

260
00:13:55,270 --> 00:13:57,730
‫que nous venons de créer, d'accord.

261
00:13:57,730 --> 00:13:59,670
‫Donc, si nous en créons maintenant

262
00:13:59,670 --> 00:14:02,980
‫un troisième, nous devrions probablement voir le premier et le deuxième.

263
00:14:02,980 --> 00:14:03,880
‫Alors essayons ça.

264
00:14:12,060 --> 00:14:13,160
‫D'accord.

265
00:14:13,160 --> 00:14:16,290
‫Envoyez celui-ci et maintenant ici dans notre sortie,

266
00:14:18,060 --> 00:14:20,830
‫je les reçois tous les trois.

267
00:14:20,830 --> 00:14:23,793
‫Donc cela n'a pas beaucoup de sens, mais de toute

268
00:14:24,800 --> 00:14:27,443
‫façon, le point que je voulais faire ici est

269
00:14:27,443 --> 00:14:29,700
‫que nous ne devrions pas utiliser

270
00:14:29,700 --> 00:14:33,560
‫pre, mais à la place nous devrions utiliser le middleware post save, d'accord.

271
00:14:33,560 --> 00:14:35,520
‫Et c'est parce qu'à la pré-sauvegarde,

272
00:14:35,520 --> 00:14:37,350
‫la critique actuelle n'est

273
00:14:37,350 --> 00:14:39,270
‫pas encore vraiment dans la collection.

274
00:14:39,270 --> 00:14:42,420
‫Par conséquent, lorsque nous faisons ensuite cette correspondance ici, elle

275
00:14:42,420 --> 00:14:45,170
‫ne devrait pas pouvoir apparaître dans la sortie ici,

276
00:14:45,170 --> 00:14:47,150
‫car encore une fois, à

277
00:14:47,150 --> 00:14:51,000
‫ce stade, elle n'est pas encore vraiment enregistrée dans la collection, d'accord.

278
00:14:51,000 --> 00:14:52,760
‫Il est donc préférable d'utiliser poster

279
00:14:52,760 --> 00:14:54,770
‫ici, car à ce moment-là, bien sûr,

280
00:14:54,770 --> 00:14:57,820
‫tous les documents sont déjà enregistrés dans la base de données

281
00:14:57,820 --> 00:14:59,330
‫et c'est donc le

282
00:14:59,330 --> 00:15:02,430
‫moment idéal pour faire ce calcul avec tous les avis déjà,

283
00:15:02,430 --> 00:15:04,723
‫puis stocker le résultat sur la tournée .

284
00:15:05,940 --> 00:15:07,750
‫D'accord, donc je ne sais

285
00:15:07,750 --> 00:15:10,403
‫pas vraiment pourquoi celui-ci ici est réellement apparu

286
00:15:11,670 --> 00:15:15,603
‫à ce stade, mais de toute façon essayons maintenant avec un autre.

287
00:15:19,290 --> 00:15:21,280
‫C'est donc le quatrième, et

288
00:15:21,280 --> 00:15:25,450
‫maintenant nous obtenons suivant n'est pas une fonction et en effet, comme

289
00:15:25,450 --> 00:15:27,930
‫je l'ai mentionné plus tôt, le post

290
00:15:27,930 --> 00:15:30,250
‫middleware n'a pas accès à suivant

291
00:15:30,250 --> 00:15:33,940
‫et donc, nous ne pouvons bien sûr pas l'appeler, ne pouvons

292
00:15:33,940 --> 00:15:34,833
‫pas l'utiliser.

293
00:15:37,070 --> 00:15:40,793
‫Très bien, et nous avons donc ici notre prochaine

294
00:15:42,160 --> 00:15:42,993
‫note, d'accord.

295
00:15:42,993 --> 00:15:45,913
‫Donc, il apparaît maintenant ici aussi.

296
00:15:48,090 --> 00:15:50,840
‫Nous n'avons donc pas besoin de cela et nous pouvons maintenant essayer

297
00:15:50,840 --> 00:15:53,053
‫de calculer nos statistiques en toute sécurité ici.

298
00:15:54,140 --> 00:15:56,600
‫Faites une sauvegarde et supprimons en

299
00:15:56,600 --> 00:15:59,000
‫fait tous ces avis.

300
00:15:59,000 --> 00:16:03,623
‫Donc, je veux essentiellement recommencer à zéro, d'accord.

301
00:16:04,880 --> 00:16:05,800
‫Donc, toutes

302
00:16:08,320 --> 00:16:11,190
‫ces cinq critiques ici devraient disparaître et maintenant

303
00:16:16,300 --> 00:16:18,450
‫nous sommes prêts à partir.

304
00:16:18,450 --> 00:16:21,030
‫Créons donc celui-ci comme le premier et

305
00:16:22,860 --> 00:16:26,400
‫maintenant allons-y, jetons un coup d'œil à nos statistiques et

306
00:16:26,400 --> 00:16:27,600
‫c'est parti.

307
00:16:27,600 --> 00:16:29,530
‫Il s'agit donc de l'identifiant actuel

308
00:16:29,530 --> 00:16:31,670
‫de la tournée, le nombre d'évaluations est de un

309
00:16:31,670 --> 00:16:33,703
‫et la moyenne est bien sûr de trois.

310
00:16:35,510 --> 00:16:39,240
‫Donc, si nous en ajoutons un autre avec une note de cinq, la

311
00:16:40,920 --> 00:16:43,310
‫moyenne devrait être de quatre et nous

312
00:16:43,310 --> 00:16:46,010
‫devrions avoir un nombre de notes égal à deux.

313
00:16:47,840 --> 00:16:52,460
‫Alors essayons cela et en effet, comme je l'ai dit,

314
00:16:52,460 --> 00:16:55,480
‫deux notes, une moyenne de quatre.

315
00:16:55,480 --> 00:16:59,010
‫Et juste un autre juste pour être vraiment sûr,

316
00:16:59,010 --> 00:17:00,610
‫ajoutons un autre

317
00:17:05,600 --> 00:17:07,240
‫avec cinq, et c'est parti.

318
00:17:07,240 --> 00:17:08,073
‫Super.

319
00:17:08,073 --> 00:17:10,990
‫Nous calculons donc correctement les statistiques, mais bien sûr,

320
00:17:10,990 --> 00:17:13,090
‫elles ne sont pas encore

321
00:17:13,090 --> 00:17:15,290
‫conservées dans le document de tournée actuel.

322
00:17:15,290 --> 00:17:18,630
‫Donc si nous venons ici à Compass pour la tournée

323
00:17:18,630 --> 00:17:20,293
‫que nous venons de

324
00:17:22,330 --> 00:17:24,340
‫créer, c'est probablement la dernière ici.

325
00:17:24,340 --> 00:17:27,790
‫Oui, donc notre tour de test, il a toujours ces valeurs

326
00:17:27,790 --> 00:17:30,470
‫par défaut de 4. 5 et zéro,

327
00:17:30,470 --> 00:17:31,350
‫d'accord.

328
00:17:31,350 --> 00:17:33,260
‫Alors maintenant, il est temps

329
00:17:33,260 --> 00:17:36,573
‫de conserver les statistiques calculées dans ce document de

330
00:17:38,250 --> 00:17:39,480
‫tournée, d'accord.

331
00:17:39,480 --> 00:17:41,670
‫Et alors faisons-le.

332
00:17:41,670 --> 00:17:44,420
‫Tout d'abord, pour pouvoir faire cela,

333
00:17:44,420 --> 00:17:47,863
‫nous devons exiger le modèle de tournée, n'est-ce pas.

334
00:17:48,810 --> 00:17:49,643
‫Donc tournée

335
00:17:51,620 --> 00:17:52,453
‫oblige

336
00:17:55,250 --> 00:17:56,483
‫et c'est parti.

337
00:18:03,860 --> 00:18:07,010
‫Donc, ce que nous devons faire, c'est essentiellement trouver

338
00:18:07,010 --> 00:18:10,160
‫la tournée actuelle, puis la mettre à jour.

339
00:18:10,160 --> 00:18:13,873
‫Nous l'avons donc fait plusieurs fois, findById

340
00:18:14,830 --> 00:18:16,980
‫et mise à jour,

341
00:18:16,980 --> 00:18:17,813
‫d'accord.

342
00:18:17,813 --> 00:18:21,370
‫Et l'ID est bien sûr l'ID de la tournée qui a

343
00:18:21,370 --> 00:18:23,670
‫été transmis à la fonction, puis

344
00:18:23,670 --> 00:18:27,140
‫un objet des données que nous voulons réellement mettre à jour.

345
00:18:27,140 --> 00:18:30,470
‫Alors, récupérons ces noms de champs à partir d'ici.

346
00:18:30,470 --> 00:18:32,500
‫Nous avons donc des cotesQuantité

347
00:18:34,970 --> 00:18:36,230
‫d'une part.

348
00:18:36,230 --> 00:18:39,260
‫Mettons-le ici à un pour l'instant juste pour

349
00:18:39,260 --> 00:18:41,240
‫que nous n'ayons pas d'erreur

350
00:18:41,240 --> 00:18:42,893
‫et de notes moyennes.

351
00:18:46,910 --> 00:18:48,940
‫Encore une fois, pour éviter toute

352
00:18:48,940 --> 00:18:50,650
‫erreur, car maintenant je veux

353
00:18:50,650 --> 00:18:53,400
‫venir ici et jeter un œil à ces statistiques.

354
00:18:53,400 --> 00:18:57,700
‫Donc, vous voyez qu'ils sont stockés dans un tableau en fait, d'accord.

355
00:18:57,700 --> 00:19:00,870
‫Nous devons donc aller à la première position de ce tableau,

356
00:19:00,870 --> 00:19:02,433
‫où se trouve cet objet.

357
00:19:04,520 --> 00:19:07,060
‫Donc, les statistiques à la position

358
00:19:07,970 --> 00:19:12,820
‫zéro et à partir de là, nous obtenons la propriété d'évaluation finale,

359
00:19:12,820 --> 00:19:13,653
‫d'accord.

360
00:19:13,653 --> 00:19:14,593
‫Alors celui-ci ici.

361
00:19:18,440 --> 00:19:21,283
‫Et puis bien sûr idem pour la note moyenne.

362
00:19:23,870 --> 00:19:24,800
‫D'accord.

363
00:19:24,800 --> 00:19:27,070
‫Et maintenant, nous devons aussi l'attendre.

364
00:19:27,070 --> 00:19:31,640
‫Donc comme toujours cela renvoie une prémisse et donc on peut l'attendre.

365
00:19:31,640 --> 00:19:34,750
‫Maintenant, nous pourrions également stocker le résultat de ceci dans une variable, mais

366
00:19:34,750 --> 00:19:37,250
‫nous n'avons pas vraiment besoin du tour du tout.

367
00:19:37,250 --> 00:19:39,530
‫Tout ce que nous voulons faire, c'est vraiment le

368
00:19:39,530 --> 00:19:40,880
‫mettre à jour, et donc

369
00:19:40,880 --> 00:19:43,700
‫nous ne stockons nulle part la valeur des résultats de la prémisse.

370
00:19:43,700 --> 00:19:44,960
‫D'accord.

371
00:19:44,960 --> 00:19:49,960
‫Essayons donc simplement d'ajouter une autre critique ici,

372
00:19:50,050 --> 00:19:53,373
‫cette fois avec une terrible.

373
00:19:55,800 --> 00:19:56,810
‫D'accord.

374
00:19:56,810 --> 00:20:00,650
‫Et tout d'abord, regardons les statistiques.

375
00:20:00,650 --> 00:20:03,300
‫Alors bien sûr, on obtient la note de quatre, donc le nombre de

376
00:20:03,300 --> 00:20:06,203
‫notes, et la moyenne de 3. 5.

377
00:20:07,270 --> 00:20:10,090
‫Alors maintenant, afin de vraiment voir si cela a

378
00:20:10,090 --> 00:20:13,290
‫fonctionné, regardons Compass ou nous pouvons également utiliser ou obtenir

379
00:20:13,290 --> 00:20:15,223
‫le point de fin de la

380
00:20:16,270 --> 00:20:17,320
‫tournée, d'accord.

381
00:20:17,320 --> 00:20:20,593
‫Nous avons donc besoin de l'identifiant de la tournée, que

382
00:20:23,550 --> 00:20:27,160
‫nous pouvons copier à partir d'ici, le coller ici, et maintenant

383
00:20:27,160 --> 00:20:30,060
‫vient le moment et en effet cela a

384
00:20:30,060 --> 00:20:31,110
‫fonctionné, parfait.

385
00:20:31,110 --> 00:20:34,940
‫Alors c'est génial, absolument fantastique.

386
00:20:34,940 --> 00:20:37,810
‫Encore une fois pour le plaisir, ajoutons

387
00:20:37,810 --> 00:20:39,893
‫une autre critique ici.

388
00:20:44,330 --> 00:20:45,163
‫D'accord.

389
00:20:45,163 --> 00:20:48,480
‫Mettez à jour celui-ci, et maintenant nous en obtenons

390
00:20:48,480 --> 00:20:51,760
‫cinq et notre moyenne a légèrement augmenté.

391
00:20:51,760 --> 00:20:52,593
‫Super.

392
00:20:52,593 --> 00:20:56,570
‫Prenons maintenant une seconde et récapitulons ce que nous avons fait ici.

393
00:20:56,570 --> 00:20:59,690
‫Nous avons donc commencé par créer une méthode statique.

394
00:20:59,690 --> 00:21:01,770
‫Donc, toute cette fonction

395
00:21:01,770 --> 00:21:04,870
‫ici pour créer essentiellement les statistiques de

396
00:21:04,870 --> 00:21:07,980
‫la moyenne et du nombre d'évaluations pour l'ID

397
00:21:07,980 --> 00:21:12,230
‫de tournée pour lequel l'évaluation actuelle a été créée, d'accord.

398
00:21:12,230 --> 00:21:14,870
‫Et nous avons créé cette fonction en tant

399
00:21:14,870 --> 00:21:18,030
‫que méthode statique, car nous devions appeler la fonction d'agrégation

400
00:21:18,030 --> 00:21:19,310
‫sur le modèle.

401
00:21:19,310 --> 00:21:22,080
‫Ainsi, dans une méthode statique, cette variable

402
00:21:22,080 --> 00:21:23,910
‫appelle exactement une méthode.

403
00:21:23,910 --> 00:21:26,670
‫C'est donc très pratique dans ces cas.

404
00:21:26,670 --> 00:21:29,930
‫Nous avons donc construit notre pipeline d'agrégation ici où

405
00:21:29,930 --> 00:21:32,590
‫nous avons sélectionné tous les avis qui correspondent

406
00:21:32,590 --> 00:21:35,880
‫à l'ID de tournée actuel, puis ils sont calculés,

407
00:21:35,880 --> 00:21:38,470
‫les statistiques de tous ces avis.

408
00:21:38,470 --> 00:21:40,520
‫Ensuite, une fois cela

409
00:21:40,520 --> 00:21:45,470
‫fait, nous avons enregistré les statistiques sur la tournée en cours, d'accord.

410
00:21:45,470 --> 00:21:47,690
‫Ensuite, afin d'utiliser réellement

411
00:21:47,690 --> 00:21:52,570
‫cette fonction, nous l'appelons après la création d'un nouvel avis, d'accord.

412
00:21:52,570 --> 00:21:55,620
‫Pour cela, nous devons utiliser ceci. constructeur car c'est

413
00:21:55,620 --> 00:21:58,930
‫ce qui pointe vers le modèle actuel.

414
00:21:58,930 --> 00:22:02,037
‫Maintenant, gardez à l'esprit comment nous avons dit que

415
00:22:02,037 --> 00:22:06,350
‫nous voulions également mettre à jour les statistiques chaque fois qu'un avis est

416
00:22:06,350 --> 00:22:08,090
‫modifié ou supprimé, car ces

417
00:22:08,090 --> 00:22:11,210
‫actions, bien sûr, influenceront également le nombre et la moyenne.

418
00:22:11,210 --> 00:22:13,960
‫Cependant, le faire est un peu plus complexe.

419
00:22:13,960 --> 00:22:18,140
‫Donc, puisque cette vidéo dure déjà assez longtemps, laissons

420
00:22:18,140 --> 00:22:20,493
‫cela à la suivante.

