﻿1
00:00:01,300 --> 00:00:03,180
‫Istruttore: Ricordi come abbiamo un

2
00:00:03,180 --> 00:00:06,500
‫campo per la valutazione media su ogni documento del tour?

3
00:00:06,500 --> 00:00:09,860
‫Bene, fino a questo punto quel campo non contiene

4
00:00:09,860 --> 00:00:12,110
‫davvero alcun dato significativo, vero?

5
00:00:12,110 --> 00:00:14,290
‫Ma quindi ora cambiamo effettivamente

6
00:00:14,290 --> 00:00:17,233
‫questo e calcoliamo le valutazioni medie in questa lezione.

7
00:00:18,920 --> 00:00:22,410
‫Quindi archiviare un riepilogo di un set di dati

8
00:00:22,410 --> 00:00:26,270
‫correlato sul set di dati principale è in realtà una tecnica

9
00:00:26,270 --> 00:00:29,900
‫molto popolare nella modellazione dei dati che non avevo ancora menzionato.

10
00:00:29,900 --> 00:00:32,720
‫E questa tecnica può effettivamente essere davvero

11
00:00:32,720 --> 00:00:34,750
‫utile per evitare query

12
00:00:34,750 --> 00:00:36,890
‫costanti del relativo set di dati.

13
00:00:36,890 --> 00:00:40,110
‫Quindi nella nostra applicazione un ottimo esempio di questa tecnica

14
00:00:40,110 --> 00:00:43,320
‫è memorizzare la valutazione media e il numero di valutazioni

15
00:00:43,320 --> 00:00:46,870
‫su ogni tour, in modo da non dover interrogare le recensioni

16
00:00:46,870 --> 00:00:49,860
‫e calcolare quella media ogni volta che interroghiamo

17
00:00:49,860 --> 00:00:52,150
‫per tutti i tour, va bene.

18
00:00:52,150 --> 00:00:54,380
‫Ad esempio, ciò potrebbe diventare molto

19
00:00:54,380 --> 00:00:57,280
‫utile per una pagina di panoramica del tour nel

20
00:00:57,280 --> 00:01:00,320
‫nostro front-end in cui non vogliamo davvero visualizzare tutte le

21
00:01:00,320 --> 00:01:03,350
‫recensioni, ma vogliamo comunque mostrare un riepilogo di queste

22
00:01:03,350 --> 00:01:06,730
‫recensioni, come ad esempio il numero di valutazioni e la media.

23
00:01:06,730 --> 00:01:09,130
‫E in realtà abbiamo già i campi per questo nel

24
00:01:09,130 --> 00:01:10,433
‫nostro schema del tour.

25
00:01:11,450 --> 00:01:15,870
‫Quindi proprio qui all'inizio, credo.

26
00:01:15,870 --> 00:01:17,660
‫Sì, quindi abbiamo la media

27
00:01:17,660 --> 00:01:19,760
‫delle valutazioni e la quantità delle

28
00:01:19,760 --> 00:01:22,380
‫valutazioni proprio qui, ma in questo momento sono

29
00:01:22,380 --> 00:01:25,307
‫solo alcuni numeri e, naturalmente, non sono la media

30
00:01:25,307 --> 00:01:27,560
‫effettiva e il numero delle valutazioni, perché

31
00:01:27,560 --> 00:01:30,840
‫non l'abbiamo mai realmente calcolato in nessun momento in la

32
00:01:30,840 --> 00:01:34,290
‫nostra applicazione, ma è esattamente quello che cambieremo in questo video.

33
00:01:34,290 --> 00:01:37,370
‫Quindi in questo momento calcoleremo la valutazione media e

34
00:01:37,370 --> 00:01:39,750
‫anche il numero di valutazioni di un

35
00:01:39,750 --> 00:01:43,330
‫tour ogni volta che una nuova recensione viene aggiunta a

36
00:01:43,330 --> 00:01:47,000
‫quel tour o anche quando una recensione viene aggiornata o cancellata,

37
00:01:47,000 --> 00:01:49,230
‫perché sono esattamente le situazioni

38
00:01:49,230 --> 00:01:52,830
‫in cui il numero o la media potrebbe cambiare, giusto.

39
00:01:52,830 --> 00:01:55,920
‫Quindi, come lo implementeremo concretamente?

40
00:01:55,920 --> 00:01:58,800
‫Bene, qui nel modello di recensione creeremo

41
00:01:58,800 --> 00:02:00,620
‫una nuova funzione che

42
00:02:00,620 --> 00:02:02,690
‫includerà un ID tour e

43
00:02:02,690 --> 00:02:05,690
‫calcolerà la valutazione media e il numero di

44
00:02:05,690 --> 00:02:09,410
‫valutazioni che esistono nella nostra raccolta per quel tour esatto.

45
00:02:09,410 --> 00:02:11,880
‫Quindi alla fine la funzione aggiornerà anche

46
00:02:11,880 --> 00:02:14,020
‫il documento del tour corrispondente.

47
00:02:14,020 --> 00:02:16,360
‫Quindi, per utilizzare quella funzione, utilizzeremo

48
00:02:16,360 --> 00:02:19,510
‫il middleware per chiamare sostanzialmente questa funzione ogni

49
00:02:19,510 --> 00:02:22,650
‫volta che c'è una nuova recensione o una

50
00:02:22,650 --> 00:02:24,980
‫viene aggiornata o eliminata, ok.

51
00:02:24,980 --> 00:02:28,030
‫Quindi iniziamo ora scrivendo quella funzione e per

52
00:02:28,030 --> 00:02:31,370
‫questo scriveremo effettivamente un metodo statico sul nostro schema,

53
00:02:31,370 --> 00:02:34,510
‫e questa è una caratteristica di Mongoose che

54
00:02:34,510 --> 00:02:36,580
‫non avevamo ancora usato.

55
00:02:36,580 --> 00:02:38,630
‫Quindi abbiamo usato solo il metodo

56
00:02:38,630 --> 00:02:40,500
‫di istanza, che possiamo chiamare

57
00:02:40,500 --> 00:02:42,050
‫sui documenti e

58
00:02:42,050 --> 00:02:46,090
‫sono anche molto utili, ma questa volta useremo davvero metodi statici.

59
00:02:46,090 --> 00:02:46,923
‫Va bene.

60
00:02:47,850 --> 00:02:51,330
‫Quindi, ancora una volta, questi possono essere chiamati direttamente sul modello,

61
00:02:51,330 --> 00:02:59,520
‫ad esempio, come questa recensione. CalcStats, ok.

62
00:02:59,520 --> 00:03:04,350
‫E il modo in cui funziona è ovviamente

63
00:03:04,350 --> 00:03:09,323
‫reviewSchema e poi . statics e quindi il nome della funzione.

64
00:03:10,490 --> 00:03:11,540
‫Quindi calcAverageRatings

65
00:03:18,360 --> 00:03:22,143
‫è uguale a una funzione, che ricorda i take in un

66
00:03:24,800 --> 00:03:27,180
‫ID tour, e quell'ID è ovviamente per

67
00:03:27,180 --> 00:03:29,670
‫il tour a cui appartiene la recensione corrente.

68
00:03:29,670 --> 00:03:32,790
‫E so che a questo punto probabilmente tutto

69
00:03:32,790 --> 00:03:35,000
‫suona un po' confuso, ma non

70
00:03:35,000 --> 00:03:36,720
‫preoccuparti una volta implementato

71
00:03:36,720 --> 00:03:38,380
‫tutto questo e

72
00:03:38,380 --> 00:03:42,080
‫anche quando lo testeremo avrà molto senso nella pratica, ok?

73
00:03:42,080 --> 00:03:45,120
‫Ad ogni modo, per eseguire effettivamente il

74
00:03:45,120 --> 00:03:48,470
‫calcolo, utilizzeremo nuovamente la pipeline di aggregazione, giusto.

75
00:03:48,470 --> 00:03:53,470
‫Quindi ricordiamolo nel nostro strumento di controllo, quindi proprio qui

76
00:03:53,970 --> 00:03:56,990
‫usiamo la pipeline di aggregazione

77
00:03:56,990 --> 00:04:00,730
‫per creare anche alcune statistiche come questa, ok.

78
00:04:00,730 --> 00:04:04,560
‫Quindi abbiamo usato il metodo aggregato, che abbiamo chiamato

79
00:04:04,560 --> 00:04:06,670
‫direttamente sul modello, ok.

80
00:04:06,670 --> 00:04:09,080
‫Quindi ora nel nostro metodo di istanza possiamo effettivamente fare

81
00:04:09,080 --> 00:04:10,393
‫la stessa identica cosa.

82
00:04:12,140 --> 00:04:15,690
‫Quindi, in un metodo statico come questo, queste parole

83
00:04:15,690 --> 00:04:18,130
‫chiave puntano effettivamente al modello corrente.

84
00:04:18,130 --> 00:04:20,623
‫Ecco perché possiamo usare questo. aggregato, perché

85
00:04:22,160 --> 00:04:25,100
‫ricorda che dobbiamo chiamarlo. aggregare direttamente sul

86
00:04:25,100 --> 00:04:27,470
‫modello, ed è esattamente per questo

87
00:04:27,470 --> 00:04:30,970
‫che stiamo usando un metodo statico qui in primo luogo.

88
00:04:30,970 --> 00:04:33,690
‫Perché di nuovo questo ora punta

89
00:04:33,690 --> 00:04:38,200
‫al modello e dobbiamo chiamare aggregato sempre sul modello, ok.

90
00:04:38,200 --> 00:04:41,610
‫Quindi in aggregato dobbiamo passare in una

91
00:04:41,610 --> 00:04:45,850
‫serie di tutte le fasi che vogliamo in aggregato, ok.

92
00:04:45,850 --> 00:04:47,930
‫Allora cosa vogliamo fare prima?

93
00:04:47,930 --> 00:04:51,930
‫Bene, il primo passo dovrebbe essere quello di selezionare tutte le

94
00:04:51,930 --> 00:04:54,280
‫recensioni che appartengono effettivamente al

95
00:04:54,280 --> 00:04:57,470
‫tour corrente che è stato passato come argomento.

96
00:04:57,470 --> 00:04:58,790
‫Va bene.

97
00:04:58,790 --> 00:05:02,093
‫Quindi la nostra prima fase è una fase di

98
00:05:03,090 --> 00:05:03,933
‫corrispondenza,

99
00:05:05,360 --> 00:05:07,580
‫ricordalo, quindi qui abbiamo passato il

100
00:05:08,620 --> 00:05:11,420
‫nostro oggetto filtro e possiamo dire tour uguale

101
00:05:11,420 --> 00:05:13,740
‫a tour, ma non ne abbiamo

102
00:05:13,740 --> 00:05:17,950
‫davvero bisogno, come già sai, quindi rimuoviamo questo parte, o in realtà

103
00:05:17,950 --> 00:05:20,670
‫solo per rendere un po' meno confuso

104
00:05:20,670 --> 00:05:24,290
‫qui con i nomi chiamiamo questo qui ID tour, ok.

105
00:05:24,290 --> 00:05:26,620
‫Quindi ho fatto un giro qui,

106
00:05:26,620 --> 00:05:27,480
‫ok.

107
00:05:27,480 --> 00:05:29,510
‫Quindi in questo modo

108
00:05:29,510 --> 00:05:33,330
‫selezioniamo solo un tour che vogliamo effettivamente aggiornare, ok.

109
00:05:33,330 --> 00:05:35,740
‫Ora nella fase successiva calcoliamo effettivamente

110
00:05:35,740 --> 00:05:37,930
‫le statistiche stesse, e

111
00:05:37,930 --> 00:05:41,033
‫per questo usiamo una fase a gironi.

112
00:05:42,920 --> 00:05:44,900
‫E nella fase di gruppo ricorda

113
00:05:44,900 --> 00:05:49,900
‫che il primo campo che dobbiamo specificare è l'ID, quindi _id e poi il campo comune

114
00:05:50,240 --> 00:05:51,740
‫che tutti i documenti hanno

115
00:05:51,740 --> 00:05:53,570
‫in comune e in base al

116
00:05:53,570 --> 00:05:56,200
‫quale vogliamo raggruppare e quindi questo sarà di

117
00:05:56,200 --> 00:05:57,543
‫nuovo il tour.

118
00:06:00,230 --> 00:06:04,460
‫Quindi, proprio come nel nostro precedente esempio di calcolo

119
00:06:04,460 --> 00:06:07,310
‫statistico, qui abbiamo raggruppato per difficoltà.

120
00:06:07,310 --> 00:06:10,250
‫Quindi in questo modo calcoliamo le statistiche per i tour facili

121
00:06:10,250 --> 00:06:11,840
‫e le statistiche per i

122
00:06:11,840 --> 00:06:14,560
‫medi e quindi le statistiche per i tour difficili.

123
00:06:14,560 --> 00:06:17,140
‫Quindi, in questo esempio, abbiamo raggruppato tutti i tour

124
00:06:17,140 --> 00:06:18,453
‫in base alla loro

125
00:06:19,450 --> 00:06:20,283
‫difficoltà, ok.

126
00:06:20,283 --> 00:06:22,810
‫Ma qui, ovviamente, stiamo raggruppando tutti i tour

127
00:06:22,810 --> 00:06:23,663
‫per tour.

128
00:06:25,440 --> 00:06:26,273
‫Grande.

129
00:06:26,273 --> 00:06:28,023
‫Ora il numero di valutazioni, ricorda

130
00:06:31,290 --> 00:06:32,653
‫come lo facciamo,

131
00:06:33,690 --> 00:06:35,970
‫quindi tutto ciò che facciamo è praticamente

132
00:06:35,970 --> 00:06:37,970
‫aggiungerne uno per ogni tour che

133
00:06:37,970 --> 00:06:41,570
‫abbiamo, quindi ogni tour che è stato abbinato nel passaggio precedente, ok.

134
00:06:41,570 --> 00:06:44,810
‫Quindi, se ci sono cinque documenti di revisione per il

135
00:06:44,810 --> 00:06:48,310
‫tour corrente, per ciascuno di questi documenti ne verrà aggiunto uno.

136
00:06:48,310 --> 00:06:51,310
‫Quindi alla fine il numero di valutazioni

137
00:06:51,310 --> 00:06:55,130
‫sarà cinque, e ancora, perché ovviamente abbiamo cinque documenti di revisione.

138
00:06:55,130 --> 00:06:57,083
‫Quindi ha senso, no?

139
00:06:58,532 --> 00:07:03,532
‫Poi anche il voto medio, che come prima usiamo l'operatore

140
00:07:03,970 --> 00:07:08,970
‫medio e questo deve essere all'interno di un oggetto e

141
00:07:09,180 --> 00:07:10,013
‫qui

142
00:07:12,490 --> 00:07:14,440
‫dentro il nome del

143
00:07:15,470 --> 00:07:18,330
‫campo che è il voto, giusto.

144
00:07:18,330 --> 00:07:22,180
‫Quindi ricorda come ogni recensione ha un campo di valutazione.

145
00:07:22,180 --> 00:07:24,993
‫Quindi è da lì che vogliamo calcolare la media.

146
00:07:27,720 --> 00:07:30,350
‫Ok, e in effetti è così.

147
00:07:30,350 --> 00:07:32,950
‫Quindi il numero e la media

148
00:07:32,950 --> 00:07:36,790
‫delle valutazioni è esattamente ciò che volevamo calcolare in questa aggregazione.

149
00:07:36,790 --> 00:07:39,740
‫Ora tieni presente che questo restituisce effettivamente

150
00:07:39,740 --> 00:07:43,290
‫una promessa e quindi dobbiamo aspettarlo e quindi

151
00:07:43,290 --> 00:07:46,193
‫memorizzarlo in una variabile chiamata stats.

152
00:07:49,070 --> 00:07:49,980
‫Va bene.

153
00:07:49,980 --> 00:07:53,023
‫Quindi contrassegna anche questo qui come asincrono,

154
00:07:54,600 --> 00:07:55,620
‫salvalo e

155
00:07:55,620 --> 00:07:59,790
‫quindi ora abbiamo effettivamente bisogno di usare quella variabile stats.

156
00:07:59,790 --> 00:08:02,930
‫Per ora tutto ciò che voglio fare solo

157
00:08:02,930 --> 00:08:06,073
‫per testare questo è effettivamente registrare le statistiche sulla console.

158
00:08:08,120 --> 00:08:09,090
‫Consolle. statistiche

159
00:08:10,600 --> 00:08:11,433
‫di registro.

160
00:08:13,640 --> 00:08:16,880
‫Ok, nel passaggio successivo vorremmo effettivamente, come ho detto prima,

161
00:08:16,880 --> 00:08:19,950
‫quindi aggiornare il documento del tour con queste statistiche,

162
00:08:19,950 --> 00:08:21,770
‫ma lo lascerò per un

163
00:08:21,770 --> 00:08:23,930
‫po' più tardi, perché per ora

164
00:08:23,930 --> 00:08:26,070
‫abbiamo davvero bisogno di chiamare questo

165
00:08:26,070 --> 00:08:28,390
‫metodo qui da qualche parte , perché

166
00:08:28,390 --> 00:08:31,133
‫altrimenti le statistiche qui non verranno mai chiamate.

167
00:08:32,100 --> 00:08:33,863
‫E ricorda come abbiamo detto

168
00:08:33,863 --> 00:08:36,160
‫all'inizio che lo faremo usando il middleware

169
00:08:36,160 --> 00:08:38,523
‫ogni volta che viene creata una nuova recensione.

170
00:08:40,050 --> 00:08:44,250
‫Quindi implementiamolo usando il pre-salvataggio di reviewSchema e

171
00:08:45,330 --> 00:08:46,163
‫poi

172
00:08:50,680 --> 00:08:54,563
‫solo la nostra normale funzione middleware qui.

173
00:08:55,860 --> 00:08:57,873
‫E ricorda che in questo tipo

174
00:08:57,873 --> 00:09:00,093
‫di middleware questa parola chiave punta al documento

175
00:09:00,093 --> 00:09:02,210
‫che è attualmente in fase di salvataggio.

176
00:09:02,210 --> 00:09:04,760
‫Quindi questo punta alla

177
00:09:06,540 --> 00:09:08,850
‫recensione attuale, ok.

178
00:09:08,850 --> 00:09:11,880
‫Quindi vorremo chiamare la funzione calcAverageRating

179
00:09:11,880 --> 00:09:15,020
‫usando questo. giro, giusto.

180
00:09:15,020 --> 00:09:18,770
‫Ora come chiameremo effettivamente questa funzione?

181
00:09:18,770 --> 00:09:19,940
‫Ricorda come ho

182
00:09:19,940 --> 00:09:22,470
‫detto che questa funzione è disponibile sul modello.

183
00:09:22,470 --> 00:09:25,050
‫Quindi fondamentalmente come questa recensione

184
00:09:25,050 --> 00:09:27,390
‫metti. calcAverageRatings e poi

185
00:09:29,557 --> 00:09:35,173
‫come ho detto vogliamo usare questo. giro, ok.

186
00:09:35,173 --> 00:09:37,240
‫E ancora, perché questa è la

187
00:09:37,240 --> 00:09:40,340
‫recensione corrente e questo è quindi l'ID del tour

188
00:09:40,340 --> 00:09:42,143
‫che passeremo all'interno di calcAverageRatings.

189
00:09:43,640 --> 00:09:46,950
‫Ora il problema è che a questo punto qui nel

190
00:09:46,950 --> 00:09:50,200
‫codice la variabile di revisione non è ancora definita.

191
00:09:50,200 --> 00:09:53,340
‫Ora potresti pensare che la soluzione semplice sarebbe

192
00:09:53,340 --> 00:09:57,780
‫spostare semplicemente questo codice qui dopo questa dichiarazione di revisione, ma sfortunatamente

193
00:09:57,780 --> 00:10:00,480
‫non funzionerà, perché proprio come in Express

194
00:10:00,480 --> 00:10:03,630
‫questo codice qui viene eseguito sostanzialmente nella sequenza

195
00:10:03,630 --> 00:10:05,730
‫in cui è dichiarato.

196
00:10:05,730 --> 00:10:08,100
‫Quindi, se dovessimo inserire questo codice

197
00:10:08,100 --> 00:10:11,550
‫qui dopo la dichiarazione di revisione, questo schema di revisione

198
00:10:11,550 --> 00:10:13,810
‫qui non conterrebbe questo middleware, perché

199
00:10:13,810 --> 00:10:16,050
‫lo dichiareremmo solo dopo che il

200
00:10:16,050 --> 00:10:19,750
‫modello di revisione è stato già creato, ok, ma fortunatamente

201
00:10:19,750 --> 00:10:23,160
‫c'è ancora un modo per aggirare questo e questo

202
00:10:23,160 --> 00:10:26,273
‫è usare questo. costruttore.

203
00:10:28,970 --> 00:10:31,640
‫Quindi questo qui punta ancora al modello.

204
00:10:31,640 --> 00:10:35,267
‫Sai, fondamentalmente di nuovo questo è il documento corrente

205
00:10:35,267 --> 00:10:38,030
‫e il costruttore è fondamentalmente il modello

206
00:10:38,030 --> 00:10:40,470
‫che ha creato quel documento.

207
00:10:40,470 --> 00:10:42,410
‫Quindi questo qui sta per

208
00:10:42,410 --> 00:10:45,823
‫il tour e quindi possiamo semplicemente farlo in questo modo.

209
00:10:47,420 --> 00:10:52,043
‫Quindi chiama il prossimo come sempre e basta.

210
00:10:54,130 --> 00:10:57,320
‫Quindi ora andiamo avanti e proviamo questo.

211
00:10:57,320 --> 00:11:00,500
‫E per farlo creerò prima un nuovo tour, perché

212
00:11:00,500 --> 00:11:02,670
‫gli altri che abbiamo già hanno

213
00:11:02,670 --> 00:11:04,620
‫la media e il

214
00:11:04,620 --> 00:11:06,730
‫numero di valutazioni già calcolati e

215
00:11:06,730 --> 00:11:10,240
‫quindi vogliamo davvero ricominciare da zero qui quando lo testiamo.

216
00:11:10,240 --> 00:11:13,270
‫Quindi, per creare un nuovo tour dobbiamo essere registrati

217
00:11:13,270 --> 00:11:16,840
‫come amministratori, e penso che lo siamo attualmente, ma solo per

218
00:11:16,840 --> 00:11:18,940
‫assicurarci di farlo di nuovo.

219
00:11:20,400 --> 00:11:21,233
‫Va bene.

220
00:11:22,660 --> 00:11:24,981
‫Quindi questo è il nuovo tour di prova.

221
00:11:24,981 --> 00:11:28,313
‫Va bene, rimuoviamoli qui, non sono obbligatori e penso

222
00:11:30,120 --> 00:11:32,663
‫che con questo siamo a posto.

223
00:11:36,950 --> 00:11:40,580
‫Va bene, e qui vedi i valori predefiniti che abbiamo impostato

224
00:11:40,580 --> 00:11:43,130
‫prima, quindi le valutazioni sono in

225
00:11:43,130 --> 00:11:46,430
‫media per cinque e la quantità impostata su zero, ok.

226
00:11:46,430 --> 00:11:49,630
‫Ora, per creare una nuova recensione, dobbiamo

227
00:11:49,630 --> 00:11:52,560
‫essere registrati come utente normale, quindi

228
00:11:52,560 --> 00:11:54,033
‫non come amministratore.

229
00:11:54,900 --> 00:11:58,900
‫Quindi prendiamo un utente normale, diciamo.

230
00:11:58,900 --> 00:12:02,120
‫Quindi usiamo questa Laura qui.

231
00:12:02,120 --> 00:12:03,470
‫Allora Laura@esempio. com e

232
00:12:04,804 --> 00:12:08,063
‫come ho detto prima la password è sempre la stessa.

233
00:12:12,000 --> 00:12:16,773
‫Quindi facciamolo e ora creeremo una nuova recensione in tour.

234
00:12:17,920 --> 00:12:21,103
‫Quindi ora prendiamo il tour che abbiamo creato

235
00:12:22,890 --> 00:12:26,653
‫in precedenza, quindi questo ID e lo mettiamo qui nell'URL.

236
00:12:27,880 --> 00:12:30,490
‫Ok, quindi ricorda che questo

237
00:12:30,490 --> 00:12:33,877
‫percorso ora ottiene automaticamente un ID tour

238
00:12:33,877 --> 00:12:37,413
‫dall'URL e un ID utente dall'utente attualmente connesso,

239
00:12:38,730 --> 00:12:39,563
‫ok.

240
00:12:39,563 --> 00:12:42,063
‫Quindi usiamo questa come prima

241
00:12:44,490 --> 00:12:48,643
‫valutazione, inviamola e ora voglio dare un'occhiata alla nostra console.

242
00:12:50,060 --> 00:12:53,230
‫Abbiamo un output qui, ma per qualche motivo è

243
00:12:53,230 --> 00:12:55,260
‫solo come questo array vuoto.

244
00:12:55,260 --> 00:12:58,010
‫Quindi qualcosa non deve funzionare qui.

245
00:12:58,010 --> 00:13:02,400
‫Quindi diamo un'occhiata all'ID del tour qui solo per

246
00:13:02,400 --> 00:13:07,200
‫assicurarci di ottenere il valore giusto qui, ID e commentiamo

247
00:13:07,200 --> 00:13:09,340
‫anche questa parte qui

248
00:13:10,210 --> 00:13:14,220
‫solo per vedere se forse c'è qualche errore in

249
00:13:14,220 --> 00:13:17,360
‫questa parte, quindi ora proviamo nuovamente.

250
00:13:17,360 --> 00:13:20,113
‫Aggiungerò semplicemente lo stesso di nuovo qui, ok.

251
00:13:23,680 --> 00:13:26,453
‫Ok, quindi ora otteniamo davvero qualcosa.

252
00:13:27,310 --> 00:13:29,790
‫Quindi abbiamo questa recensione che è

253
00:13:29,790 --> 00:13:32,210
‫quella che abbiamo creato inizialmente.

254
00:13:32,210 --> 00:13:34,900
‫Quindi inizia con questo ac15,

255
00:13:34,900 --> 00:13:39,623
‫ma quello che ho appena creato è questo 66d, ok.

256
00:13:39,623 --> 00:13:44,223
‫Quindi diamo un'occhiata a questo qui in Compass.

257
00:13:45,490 --> 00:13:47,223
‫Quindi dobbiamo andare all'ultima pagina.

258
00:13:49,380 --> 00:13:52,450
‫Ok, quindi quello che appare nella nostra console

259
00:13:52,450 --> 00:13:55,270
‫è solo questo qui, ma non il

260
00:13:55,270 --> 00:13:57,730
‫secondo che abbiamo appena creato, ok.

261
00:13:57,730 --> 00:13:59,670
‫Quindi, se ora ne creiamo

262
00:13:59,670 --> 00:14:02,980
‫un terzo, probabilmente dovremmo vedere il primo e il secondo.

263
00:14:02,980 --> 00:14:03,880
‫Quindi proviamolo.

264
00:14:12,060 --> 00:14:13,160
‫Va bene.

265
00:14:13,160 --> 00:14:16,290
‫Invia questo e ora qui nel nostro

266
00:14:18,060 --> 00:14:20,830
‫output li ottengo tutti e tre.

267
00:14:20,830 --> 00:14:23,793
‫Quindi non ha molto senso, ma comunque

268
00:14:24,800 --> 00:14:27,443
‫il punto che volevo chiarire qui

269
00:14:27,443 --> 00:14:29,700
‫è che non dovremmo usare

270
00:14:29,700 --> 00:14:33,560
‫pre, ma invece dovremmo usare il middleware post-salvataggio, ok.

271
00:14:33,560 --> 00:14:35,520
‫E questo perché al momento del

272
00:14:35,520 --> 00:14:37,350
‫salvataggio la recensione corrente

273
00:14:37,350 --> 00:14:39,270
‫non è ancora nella raccolta.

274
00:14:39,270 --> 00:14:42,420
‫Quindi, quando eseguiamo questa corrispondenza qui, non dovrebbe

275
00:14:42,420 --> 00:14:45,170
‫essere in grado di apparire nell'output qui,

276
00:14:45,170 --> 00:14:47,150
‫perché di nuovo in questo

277
00:14:47,150 --> 00:14:51,000
‫momento non è ancora stato realmente salvato nella raccolta, ok.

278
00:14:51,000 --> 00:14:52,760
‫Quindi è meglio usare post

279
00:14:52,760 --> 00:14:54,770
‫qui, perché in quel momento, ovviamente, tutti

280
00:14:54,770 --> 00:14:57,820
‫i documenti sono già salvati nel database e quindi è

281
00:14:57,820 --> 00:14:59,330
‫un ottimo momento per

282
00:14:59,330 --> 00:15:02,430
‫fare effettivamente questo calcolo con tutte le recensioni già e

283
00:15:02,430 --> 00:15:04,723
‫quindi memorizzare il risultato sul tour .

284
00:15:05,940 --> 00:15:07,750
‫Ok, quindi non sono

285
00:15:07,750 --> 00:15:10,403
‫davvero sicuro del perché questo qui sia effettivamente

286
00:15:11,670 --> 00:15:15,603
‫apparso a questo punto, ma comunque ora proviamo con un altro.

287
00:15:19,290 --> 00:15:21,280
‫Quindi questo è il quarto,

288
00:15:21,280 --> 00:15:25,450
‫e ora otteniamo successivo non è una funzione e infatti,

289
00:15:25,450 --> 00:15:27,930
‫come ho detto prima, il middleware

290
00:15:27,930 --> 00:15:30,250
‫post non ha accesso a

291
00:15:30,250 --> 00:15:33,940
‫successivo e quindi, ovviamente, non possiamo chiamarlo, non possiamo

292
00:15:33,940 --> 00:15:34,833
‫usarlo.

293
00:15:37,070 --> 00:15:40,793
‫Va bene, quindi qui abbiamo la nostra prossima valutazione,

294
00:15:42,160 --> 00:15:42,993
‫ok.

295
00:15:42,993 --> 00:15:45,913
‫Quindi ora compare anche qui.

296
00:15:48,090 --> 00:15:50,840
‫Quindi non ne abbiamo bisogno e ora possiamo tranquillamente

297
00:15:50,840 --> 00:15:53,053
‫provare a calcolare le nostre statistiche qui.

298
00:15:54,140 --> 00:15:56,600
‫Salvalo e in realtà eliminiamo

299
00:15:56,600 --> 00:15:59,000
‫tutte queste recensioni.

300
00:15:59,000 --> 00:16:03,623
‫Quindi fondamentalmente voglio ricominciare da zero, ok.

301
00:16:04,880 --> 00:16:05,800
‫Quindi tutte

302
00:16:08,320 --> 00:16:11,190
‫queste cinque recensioni qui dovrebbero andare e

303
00:16:16,300 --> 00:16:18,450
‫ora siamo pronti per partire.

304
00:16:18,450 --> 00:16:21,030
‫Quindi creiamo effettivamente questo come il primo

305
00:16:22,860 --> 00:16:26,400
‫e ora andiamo avanti e diamo un'occhiata alle nostre statistiche

306
00:16:26,400 --> 00:16:27,600
‫ed eccoci qui.

307
00:16:27,600 --> 00:16:29,530
‫Quindi questo è l'ID del

308
00:16:29,530 --> 00:16:31,670
‫tour corrente, quindi il numero di valutazioni è

309
00:16:31,670 --> 00:16:33,703
‫uno e la media è ovviamente tre.

310
00:16:35,510 --> 00:16:39,240
‫Quindi, se ne aggiungiamo un altro con il punteggio di cinque,

311
00:16:40,920 --> 00:16:43,310
‫la media dovrebbe essere quattro e il

312
00:16:43,310 --> 00:16:46,010
‫numero di voti dovrebbe essere pari a due.

313
00:16:47,840 --> 00:16:52,460
‫Quindi proviamoci e in effetti proprio come ho detto due

314
00:16:52,460 --> 00:16:55,480
‫valutazioni, una media di quattro.

315
00:16:55,480 --> 00:16:59,010
‫E solo un altro solo per essere davvero sicuri,

316
00:16:59,010 --> 00:17:00,610
‫aggiungiamone un altro

317
00:17:05,600 --> 00:17:07,240
‫con cinque, ed eccoci qui.

318
00:17:07,240 --> 00:17:08,073
‫Grande.

319
00:17:08,073 --> 00:17:10,990
‫Quindi ora stiamo calcolando correttamente le statistiche, ma

320
00:17:10,990 --> 00:17:13,090
‫ovviamente non vengono ancora

321
00:17:13,090 --> 00:17:15,290
‫mantenute nel documento del tour corrente.

322
00:17:15,290 --> 00:17:18,630
‫Quindi, se veniamo qui in Compass al tour

323
00:17:18,630 --> 00:17:20,293
‫che abbiamo appena

324
00:17:22,330 --> 00:17:24,340
‫creato, probabilmente è l'ultimo qui.

325
00:17:24,340 --> 00:17:27,790
‫Sì, quindi il nostro tour di prova ha ancora questi valori

326
00:17:27,790 --> 00:17:30,470
‫predefiniti di 4. 5 e zero,

327
00:17:30,470 --> 00:17:31,350
‫ok.

328
00:17:31,350 --> 00:17:33,260
‫Quindi ora è il momento

329
00:17:33,260 --> 00:17:36,573
‫di mantenere effettivamente le statistiche calcolate in questo documento

330
00:17:38,250 --> 00:17:39,480
‫del tour, ok.

331
00:17:39,480 --> 00:17:41,670
‫E quindi facciamolo.

332
00:17:41,670 --> 00:17:44,420
‫Prima di tutto, per poterlo

333
00:17:44,420 --> 00:17:47,863
‫fare, abbiamo bisogno del modello del tour, giusto.

334
00:17:48,810 --> 00:17:49,643
‫Quindi il

335
00:17:51,620 --> 00:17:52,453
‫tour richiede

336
00:17:55,250 --> 00:17:56,483
‫e ci siamo.

337
00:18:03,860 --> 00:18:07,010
‫Quindi quello che dobbiamo fare è sostanzialmente

338
00:18:07,010 --> 00:18:10,160
‫trovare il tour attuale e quindi aggiornarlo.

339
00:18:10,160 --> 00:18:13,873
‫Quindi l'abbiamo fatto prima molte volte,

340
00:18:14,830 --> 00:18:16,980
‫findById e update,

341
00:18:16,980 --> 00:18:17,813
‫ok.

342
00:18:17,813 --> 00:18:21,370
‫E l'ID è ovviamente l'ID del tour che è

343
00:18:21,370 --> 00:18:23,670
‫stato passato nella funzione e

344
00:18:23,670 --> 00:18:27,140
‫quindi un oggetto dei dati che vogliamo effettivamente aggiornare.

345
00:18:27,140 --> 00:18:30,470
‫Quindi prendiamo questi nomi di campo da qui.

346
00:18:30,470 --> 00:18:32,500
‫Quindi abbiamo valutazioniQuantità da

347
00:18:34,970 --> 00:18:36,230
‫un lato.

348
00:18:36,230 --> 00:18:39,260
‫Mettiamolo qui a uno per ora solo così

349
00:18:39,260 --> 00:18:41,240
‫non otteniamo un errore e

350
00:18:41,240 --> 00:18:42,893
‫valutazioni nella media.

351
00:18:46,910 --> 00:18:48,940
‫Ancora una volta, per evitare

352
00:18:48,940 --> 00:18:50,650
‫errori, perché ora voglio

353
00:18:50,650 --> 00:18:53,400
‫venire qui e dare un'occhiata a queste statistiche.

354
00:18:53,400 --> 00:18:57,700
‫Quindi vedi che in realtà sono memorizzati in un array, ok.

355
00:18:57,700 --> 00:19:00,870
‫Quindi dobbiamo andare alla prima posizione di quell'array, che è dove

356
00:19:00,870 --> 00:19:02,433
‫si trova questo oggetto.

357
00:19:04,520 --> 00:19:07,060
‫Quindi le statistiche alla posizione

358
00:19:07,970 --> 00:19:12,820
‫zero e poi da lì otteniamo la proprietà di valutazione finale,

359
00:19:12,820 --> 00:19:13,653
‫ok.

360
00:19:13,653 --> 00:19:14,593
‫Quindi questo qui.

361
00:19:18,440 --> 00:19:21,283
‫E poi ovviamente lo stesso per la valutazione media.

362
00:19:23,870 --> 00:19:24,800
‫Va bene.

363
00:19:24,800 --> 00:19:27,070
‫E ora dobbiamo anche aspettarlo.

364
00:19:27,070 --> 00:19:31,640
‫Quindi come sempre questo restituisce una premessa e quindi possiamo aspettarlo.

365
00:19:31,640 --> 00:19:34,750
‫Ora potremmo anche memorizzare il risultato di questo in una

366
00:19:34,750 --> 00:19:37,250
‫variabile, ma non abbiamo affatto bisogno del tour.

367
00:19:37,250 --> 00:19:39,530
‫Tutto ciò che vogliamo fare è aggiornarlo

368
00:19:39,530 --> 00:19:40,880
‫davvero, quindi non memorizziamo

369
00:19:40,880 --> 00:19:43,700
‫il valore dei risultati della premessa da nessuna parte.

370
00:19:43,700 --> 00:19:44,960
‫Va bene.

371
00:19:44,960 --> 00:19:49,960
‫Quindi proviamo semplicemente ad aggiungere un'altra recensione qui,

372
00:19:50,050 --> 00:19:53,373
‫questa volta con una terribile.

373
00:19:55,800 --> 00:19:56,810
‫Va bene.

374
00:19:56,810 --> 00:20:00,650
‫E prima di tutto, diamo un'occhiata alle statistiche.

375
00:20:00,650 --> 00:20:03,300
‫Quindi, ovviamente, otteniamo la valutazione di quattro, quindi il numero di

376
00:20:03,300 --> 00:20:06,203
‫valutazioni e la media di 3. 5.

377
00:20:07,270 --> 00:20:10,090
‫Quindi ora per vedere davvero se ha funzionato,

378
00:20:10,090 --> 00:20:13,290
‫diamo un'occhiata a Compass o possiamo anche usare o

379
00:20:13,290 --> 00:20:15,223
‫ottenere il punto finale del

380
00:20:16,270 --> 00:20:17,320
‫tour, ok.

381
00:20:17,320 --> 00:20:20,593
‫Quindi abbiamo bisogno dell'ID del tour, che possiamo

382
00:20:23,550 --> 00:20:27,160
‫copiare da qui, incollarlo qui, e ora arriva

383
00:20:27,160 --> 00:20:30,060
‫il momento e in effetti ha

384
00:20:30,060 --> 00:20:31,110
‫funzionato, perfetto.

385
00:20:31,110 --> 00:20:34,940
‫Quindi è fantastico, assolutamente fantastico.

386
00:20:34,940 --> 00:20:37,810
‫Ancora una volta per il gusto di

387
00:20:37,810 --> 00:20:39,893
‫farlo, aggiungiamo un'altra recensione qui.

388
00:20:44,330 --> 00:20:45,163
‫Va bene.

389
00:20:45,163 --> 00:20:48,480
‫Aggiorna questo, così ora ne otteniamo cinque e

390
00:20:48,480 --> 00:20:51,760
‫la nostra media è aumentata un po'.

391
00:20:51,760 --> 00:20:52,593
‫Grande.

392
00:20:52,593 --> 00:20:56,570
‫Quindi ora prendiamoci solo un secondo e ricapitoliamo quello che abbiamo fatto qui.

393
00:20:56,570 --> 00:20:59,690
‫Quindi abbiamo iniziato creando un metodo statico.

394
00:20:59,690 --> 00:21:01,770
‫Quindi questa intera funzione

395
00:21:01,770 --> 00:21:04,870
‫qui per creare sostanzialmente le statistiche della

396
00:21:04,870 --> 00:21:07,980
‫media e il numero di valutazioni per l'ID

397
00:21:07,980 --> 00:21:12,230
‫tour per cui è stata creata la recensione corrente, ok.

398
00:21:12,230 --> 00:21:14,870
‫E abbiamo creato questa funzione come metodo

399
00:21:14,870 --> 00:21:18,030
‫statico, perché dovevamo chiamare la funzione di aggregazione

400
00:21:18,030 --> 00:21:19,310
‫sul modello.

401
00:21:19,310 --> 00:21:22,080
‫Quindi in un metodo statico questa variabile

402
00:21:22,080 --> 00:21:23,910
‫chiama esattamente un metodo.

403
00:21:23,910 --> 00:21:26,670
‫Quindi è molto utile in questi casi.

404
00:21:26,670 --> 00:21:29,930
‫Quindi abbiamo costruito la nostra pipeline di aggregazione qui,

405
00:21:29,930 --> 00:21:32,590
‫dove abbiamo selezionato tutte le recensioni che corrispondevano

406
00:21:32,590 --> 00:21:35,880
‫all'ID del tour corrente, e poi sono state calcolate,

407
00:21:35,880 --> 00:21:38,470
‫le statistiche per tutte queste recensioni.

408
00:21:38,470 --> 00:21:40,520
‫Quindi, dopo aver

409
00:21:40,520 --> 00:21:45,470
‫fatto ciò, abbiamo salvato le statistiche nel tour corrente, ok.

410
00:21:45,470 --> 00:21:47,690
‫Quindi, per utilizzare effettivamente questa

411
00:21:47,690 --> 00:21:52,570
‫funzione, la chiamiamo dopo che è stata creata una nuova recensione, ok.

412
00:21:52,570 --> 00:21:55,620
‫Per questo dobbiamo usare questo. costruttore perché questo

413
00:21:55,620 --> 00:21:58,930
‫è ciò che punta al modello corrente.

414
00:21:58,930 --> 00:22:02,037
‫Ora tieni presente come abbiamo detto che vogliamo

415
00:22:02,037 --> 00:22:06,350
‫aggiornare anche le statistiche ogni volta che una recensione viene modificata o

416
00:22:06,350 --> 00:22:08,090
‫cancellata, perché queste azioni,

417
00:22:08,090 --> 00:22:11,210
‫ovviamente, influenzeranno anche il numero e la media.

418
00:22:11,210 --> 00:22:13,960
‫Tuttavia, farlo è un po' più complesso.

419
00:22:13,960 --> 00:22:18,140
‫Quindi, dal momento che questo video è già abbastanza

420
00:22:18,140 --> 00:22:20,493
‫lungo, lasciamo questo al prossimo.

