﻿1
00:00:01,110 --> 00:00:02,910
‫Istruttore: Quindi, questa è la

2
00:00:02,910 --> 00:00:05,230
‫seconda parte del calcolo delle statistiche di revisione.

3
00:00:05,230 --> 00:00:08,873
‫Questa volta, per quando una recensione viene aggiornata o eliminata.

4
00:00:10,780 --> 00:00:13,310
‫E questa parte è in realtà

5
00:00:13,310 --> 00:00:15,450
‫un po' più difficile perché,

6
00:00:15,450 --> 00:00:17,730
‫tieni presente che una recensione viene

7
00:00:19,829 --> 00:00:21,246
‫aggiornata o

8
00:00:25,490 --> 00:00:28,277
‫eliminata utilizzando findByIdAndUpdate o anche findByIdAndDelete, giusto?

9
00:00:33,540 --> 00:00:37,020
‫Quindi, per questi, in realtà non abbiamo il middleware dei

10
00:00:37,020 --> 00:00:39,830
‫documenti, ma solo il middleware delle query, ok.

11
00:00:39,830 --> 00:00:42,630
‫E quindi nella query, in realtà non

12
00:00:42,630 --> 00:00:46,140
‫abbiamo accesso diretto al documento per fare qualcosa di

13
00:00:46,140 --> 00:00:48,300
‫simile a questo, ok.

14
00:00:48,300 --> 00:00:51,380
‫Perché, ricorda, abbiamo bisogno di accedere alla recensione corrente,

15
00:00:51,380 --> 00:00:54,130
‫in modo che da lì possiamo estrarre l'ID

16
00:00:54,130 --> 00:00:58,030
‫del tour e quindi calcolare le statistiche da lì, giusto, ma di

17
00:00:58,030 --> 00:01:00,130
‫nuovo, per questi hook qui,

18
00:01:00,130 --> 00:01:02,830
‫abbiamo solo il middleware di query, ok.

19
00:01:02,830 --> 00:01:04,890
‫Ma ora lascia che ti mostri

20
00:01:04,890 --> 00:01:07,610
‫un bel trucco per aggirare effettivamente questa limitazione.

21
00:01:07,610 --> 00:01:10,040
‫Quindi, implementeremo un pre-middleware

22
00:01:10,040 --> 00:01:14,073
‫per questi hook, fondamentalmente per questi eventi.

23
00:01:15,860 --> 00:01:19,730
‫Quindi pre, e poi di nuovo userò un'espressione regolare

24
00:01:19,730 --> 00:01:22,870
‫per una stringa che inizia con findOneAnd

25
00:01:22,870 --> 00:01:25,457
‫e il gioco è fatto.

26
00:01:28,641 --> 00:01:30,410
‫E quindi

27
00:01:30,410 --> 00:01:33,970
‫questo funzionerà per findOneAndUpdate e findOneAndDelete

28
00:01:34,830 --> 00:01:37,150
‫perché, ricorda che dietro

29
00:01:37,150 --> 00:01:40,480
‫le quinte, findByIdAndUpdate è solo

30
00:01:40,480 --> 00:01:44,750
‫una scorciatoia per findOneAndUpdate con l'ID corrente, giusto.

31
00:01:44,750 --> 00:01:48,530
‫Quindi qui, abbiamo effettivamente bisogno di usare

32
00:01:48,530 --> 00:01:52,833
‫gli hook del middleware findOneAndDelete e findOneAndUpdate, va bene.

33
00:01:55,500 --> 00:01:59,970
‫Quindi, funzione, e ottiene la parola chiave successiva

34
00:01:59,970 --> 00:02:02,420
‫perché è pre-middleware.

35
00:02:02,420 --> 00:02:05,310
‫Quindi, ricorda che l'obiettivo è ottenere l'accesso

36
00:02:05,310 --> 00:02:07,990
‫al documento di revisione corrente, ok,

37
00:02:07,990 --> 00:02:11,280
‫ma qui, questa parola chiave è la query corrente.

38
00:02:11,280 --> 00:02:13,650
‫Ora, come lo aggireremo?

39
00:02:13,650 --> 00:02:16,150
‫Bene, possiamo fondamentalmente eseguire una query e poi

40
00:02:16,150 --> 00:02:18,200
‫questo ci darà il documento che è

41
00:02:18,200 --> 00:02:20,040
‫attualmente in fase di elaborazione.

42
00:02:20,040 --> 00:02:22,650
‫Quindi, per farlo, possiamo usare findOne.

43
00:02:25,590 --> 00:02:26,590
‫E questo è tutto.

44
00:02:26,590 --> 00:02:29,740
‫Quindi tutto ciò che dobbiamo fare è attendere questa query e quindi

45
00:02:29,740 --> 00:02:31,090
‫salvarla da qualche parte.

46
00:02:34,140 --> 00:02:38,850
‫Quindi chiamiamola r, che sta per revisione, ok.

47
00:02:38,850 --> 00:02:40,763
‫Quindi salvalo come asincrono.

48
00:02:42,650 --> 00:02:43,773
‫E questo è tutto.

49
00:02:45,000 --> 00:02:47,830
‫E solo per assicurarci che

50
00:02:47,830 --> 00:02:52,340
‫funzioni qui, per ora registriamo questo sulla console, ok.

51
00:02:52,340 --> 00:02:55,080
‫Quindi, senza fare alcun calcolo, tutto

52
00:02:55,080 --> 00:02:56,760
‫ciò che ci

53
00:02:56,760 --> 00:02:59,960
‫interessa è vedere se questo bel trucco funziona.

54
00:02:59,960 --> 00:03:02,410
‫Quindi, in pratica, il trucco di aggirarlo in

55
00:03:02,410 --> 00:03:04,070
‫un middleware di query,

56
00:03:04,070 --> 00:03:05,853
‫abbiamo solo accesso alla query.

57
00:03:06,890 --> 00:03:09,850
‫Quindi, di nuovo, dobbiamo ottenere l'accesso

58
00:03:09,850 --> 00:03:13,210
‫al documento, quindi eseguiamo sostanzialmente questa query

59
00:03:13,210 --> 00:03:14,463
‫utilizzando findOne.

60
00:03:15,620 --> 00:03:20,603
‫Va bene, quindi aggiorniamo una recensione, quindi aggiorniamo effettivamente

61
00:03:22,570 --> 00:03:26,313
‫l'ultima che abbiamo fatto, va bene, e

62
00:03:31,310 --> 00:03:33,050
‫la valutazione,

63
00:03:33,050 --> 00:03:35,010
‫ora impostiamola a quattro.

64
00:03:35,010 --> 00:03:37,080
‫Quindi prima erano

65
00:03:38,130 --> 00:03:42,023
‫cinque e ora lo stiamo cambiando in quattro.

66
00:03:43,040 --> 00:03:44,083
‫Quindi

67
00:03:46,900 --> 00:03:50,620
‫lo ha inviato, ed ecco la recensione.

68
00:03:50,620 --> 00:03:53,140
‫Ora, naturalmente, la valutazione è ancora impostata

69
00:03:53,140 --> 00:03:56,130
‫su cinque a questo punto, perché questo findOne

70
00:03:56,130 --> 00:03:58,850
‫qui prende davvero il documento dal database,

71
00:03:58,850 --> 00:04:01,660
‫e quindi a questo punto, in pre, non

72
00:04:01,660 --> 00:04:04,900
‫ha ancora mantenuto alcuna modifica al database, e quindi

73
00:04:04,900 --> 00:04:06,540
‫erano le cinque prima,

74
00:04:06,540 --> 00:04:08,990
‫e adesso saranno ancora le cinque.

75
00:04:08,990 --> 00:04:10,460
‫Ma questo non ha

76
00:04:10,460 --> 00:04:13,750
‫molta importanza qui perché tutto ciò che ci interessa è questo ID.

77
00:04:13,750 --> 00:04:16,580
‫In realtà, questo ID tour, giusto, perché

78
00:04:16,580 --> 00:04:18,350
‫è quello che

79
00:04:18,350 --> 00:04:21,220
‫ci servirà per calcolare le valutazioni medie.

80
00:04:21,220 --> 00:04:24,363
‫Ok, quindi ora usiamo quella funzione.

81
00:04:25,240 --> 00:04:27,850
‫Ok, ora pensiamo a questo

82
00:04:27,850 --> 00:04:32,190
‫perché se dovessimo usare questa funzione calcAverageRatings in

83
00:04:32,190 --> 00:04:33,850
‫questo momento,

84
00:04:33,850 --> 00:04:36,100
‫allora calcoleremmo le statistiche

85
00:04:36,100 --> 00:04:39,490
‫usando i dati non aggiornati, ok.

86
00:04:39,490 --> 00:04:42,390
‫E quindi questo è esattamente lo stesso motivo

87
00:04:42,390 --> 00:04:45,400
‫per cui quassù dovevamo usare anche post e non

88
00:04:45,400 --> 00:04:48,650
‫pre, ok, perché solo dopo che il documento è

89
00:04:48,650 --> 00:04:50,620
‫già stato salvato nel

90
00:04:50,620 --> 00:04:52,850
‫database ha senso calcolare le valutazioni.

91
00:04:52,850 --> 00:04:55,570
‫E quindi qui è esattamente la stessa cosa,

92
00:04:55,570 --> 00:04:58,650
‫con la grande differenza che non possiamo semplicemente cambiare

93
00:04:58,650 --> 00:05:00,533
‫questo pre in post.

94
00:05:01,390 --> 00:05:04,500
‫Quindi non possiamo farlo perché in questo momento non

95
00:05:04,500 --> 00:05:07,260
‫abbiamo più accesso alla query perché la query

96
00:05:07,260 --> 00:05:10,410
‫è già stata eseguita, giusto, e quindi senza la

97
00:05:10,410 --> 00:05:11,500
‫query, non

98
00:05:11,500 --> 00:05:13,670
‫possiamo salvare il documento di revisione

99
00:05:13,670 --> 00:05:16,410
‫e quindi non possiamo eseguire questa funzione.

100
00:05:16,410 --> 00:05:20,360
‫Quindi, questo è davvero confuso, lo capisco, ma ho davvero deciso

101
00:05:20,360 --> 00:05:23,710
‫di creare questa lezione in questo modo perché, beh,

102
00:05:23,710 --> 00:05:25,790
‫è davvero l'unica soluzione

103
00:05:25,790 --> 00:05:28,730
‫intorno a questo problema, ed è davvero un

104
00:05:28,730 --> 00:05:32,240
‫ottimo esercizio per te capire fondamentalmente questa Hello Experience.

105
00:05:32,240 --> 00:05:35,833
‫Quindi, la soluzione per questo è ora usare

106
00:05:37,520 --> 00:05:40,690
‫post, quindi, reviewSchema, quindi praticamente lo

107
00:05:40,690 --> 00:05:44,460
‫stesso, quindi copiamo tutto questo, rendiamoci la vita

108
00:05:44,460 --> 00:05:47,640
‫un po' più facile, sbarazziamoci di questo

109
00:05:47,640 --> 00:05:50,033
‫e sbarazziamoci del prossimo.

110
00:05:51,850 --> 00:05:54,320
‫Qui, dobbiamo anche chiamare il

111
00:05:54,320 --> 00:05:58,170
‫prossimo, ok, ma poi lo facciamo post, ok.

112
00:05:58,170 --> 00:05:59,730
‫E quindi ora questo

113
00:05:59,730 --> 00:06:01,840
‫punto nel tempo, quindi dopo che la query

114
00:06:01,840 --> 00:06:04,700
‫è già terminata, e quindi la revisione è stata aggiornata, questo

115
00:06:04,700 --> 00:06:06,290
‫è un momento perfetto nel tempo

116
00:06:06,290 --> 00:06:08,283
‫in cui possiamo quindi chiamare questa funzione.

117
00:06:09,510 --> 00:06:12,720
‫Quindi, calcola le valutazioni medie.

118
00:06:12,720 --> 00:06:15,930
‫Ma da dove otteniamo ora l'ID del tour?

119
00:06:15,930 --> 00:06:17,860
‫Bene, dovremo usare un trucco

120
00:06:17,860 --> 00:06:21,260
‫che è fondamentalmente quello di passare i dati dal

121
00:06:21,260 --> 00:06:23,000
‫pre-middleware al post middleware.

122
00:06:23,000 --> 00:06:26,690
‫Quindi, invece di salvare questo documento in una semplice variabile,

123
00:06:26,690 --> 00:06:30,403
‫lo salveremo in questo. R.

124
00:06:31,750 --> 00:06:35,773
‫Quindi, in pratica, creiamo una proprietà su questa variabile.

125
00:06:36,700 --> 00:06:40,390
‫Ok, quindi ora qui, abbiamo ancora accesso a quello.

126
00:06:40,390 --> 00:06:45,350
‫E quindi ora possiamo dire questo. r, che ricorda è la recensione, e

127
00:06:45,350 --> 00:06:47,603
‫poi . tour.

128
00:06:49,220 --> 00:06:53,300
‫Quindi, questo è di nuovo abbastanza confuso, ma

129
00:06:53,300 --> 00:06:56,850
‫anche abbastanza divertente una volta capito come

130
00:06:56,850 --> 00:06:58,873
‫funziona davvero, ok.

131
00:06:59,800 --> 00:07:03,200
‫Ora, di nuovo, abbiamo bisogno di qualcosa di simile

132
00:07:03,200 --> 00:07:06,320
‫qui per chiamare effettivamente questa funzione qui perché

133
00:07:06,320 --> 00:07:08,460
‫ricorda che questo in

134
00:07:08,460 --> 00:07:12,570
‫effetti è un metodo statico, e quindi dobbiamo chiamarlo sul modello.

135
00:07:12,570 --> 00:07:15,500
‫Ora, dov'è questo modello in questo caso?

136
00:07:15,500 --> 00:07:20,500
‫Bene, è a questo. r, che in questo caso

137
00:07:20,848 --> 00:07:22,550
‫è equivalente a

138
00:07:22,550 --> 00:07:25,113
‫questo qui in questo middleware,. costruttore. calcAverageRatings.

139
00:07:26,427 --> 00:07:29,217
‫Woo, sembra piuttosto opprimente, non è vero?

140
00:07:31,860 --> 00:07:35,403
‫Certo, dobbiamo aspettarlo, quindi è per questo che l'abbiamo

141
00:07:36,600 --> 00:07:38,100
‫dichiarato asincrono, ok.

142
00:07:38,100 --> 00:07:42,600
‫Quindi, ancora una volta, abbiamo utilizzato questo modo per passare i

143
00:07:42,600 --> 00:07:46,210
‫dati dal middleware pre al middleware post, e quindi

144
00:07:46,210 --> 00:07:48,530
‫qui abbiamo recuperato il

145
00:07:48,530 --> 00:07:50,930
‫documento di revisione da questa variabile.

146
00:07:50,930 --> 00:07:55,060
‫Ok, e ancora, dovevamo farlo in questo modo

147
00:07:55,060 --> 00:07:59,970
‫perché a questo punto la query era già stata eseguita

148
00:07:59,970 --> 00:08:01,317
‫e quindi

149
00:08:01,317 --> 00:08:03,550
‫non potevamo farlo qui.

150
00:08:03,550 --> 00:08:06,783
‫E in realtà scriviamolo; NON

151
00:08:11,950 --> 00:08:16,753
‫funziona qui, la query è già stata eseguita.

152
00:08:19,690 --> 00:08:21,253
‫Ottimo, e con questo dovremmo

153
00:08:22,610 --> 00:08:24,130
‫essere pronti per testarlo.

154
00:08:24,130 --> 00:08:27,103
‫Quindi andiamo avanti e aggiorniamo questo qui

155
00:08:28,100 --> 00:08:32,850
‫ancora una volta, e impostiamolo su una valutazione di uno, va bene.

156
00:08:32,850 --> 00:08:37,493
‫Diamo ora un'occhiata qui, finché non vedi che il numero di valutazioni è

157
00:08:39,160 --> 00:08:41,060
‫ancora cinque, ma la media

158
00:08:41,060 --> 00:08:44,020
‫ora è solo tre, e ora la domanda è

159
00:08:44,020 --> 00:08:46,620
‫se questo si è davvero aggiornato anche durante

160
00:08:46,620 --> 00:08:49,220
‫il tour, e, sì, in effetti, lo

161
00:08:49,220 --> 00:08:50,593
‫ha fatto .

162
00:08:53,740 --> 00:08:58,150
‫Quindi, cinque voti con una media di tre.

163
00:08:58,150 --> 00:09:02,040
‫Ottimo, ora aggiorniamone un altro.

164
00:09:02,040 --> 00:09:06,220
‫Quindi, per questo, prendiamo tutte le nostre recensioni,

165
00:09:06,220 --> 00:09:09,543
‫e in realtà non le vogliamo

166
00:09:11,570 --> 00:09:14,280
‫tutte, ma solo l'ultima.

167
00:09:14,280 --> 00:09:16,201
‫E qui ho ancora

168
00:09:16,201 --> 00:09:18,730
‫questo filtro, quindi dovrei liberarmene, quindi

169
00:09:18,730 --> 00:09:20,253
‫otteniamo tutti i

170
00:09:21,650 --> 00:09:26,650
‫65 risultati, quindi tutte queste recensioni, ma vogliamo solo le ultime, quindi

171
00:09:26,980 --> 00:09:29,280
‫quelle che abbiamo appena creato.

172
00:09:29,280 --> 00:09:31,073
‫Allora aggiorniamoci...

173
00:09:32,820 --> 00:09:34,160
‫Non ne sono sicuro, perché in realtà non sono in ordine qui.

174
00:09:37,570 --> 00:09:42,090
‫Andiamo, ok, quindi qui abbiamo quelli più recenti.

175
00:09:42,090 --> 00:09:47,090
‫Quindi permettetemi ora di aggiornare questo qui, diciamo, quattro, solo

176
00:09:47,490 --> 00:09:50,963
‫come test finale, e così questo dovrebbe

177
00:09:56,540 --> 00:09:59,410
‫aumentare un po' la media.

178
00:09:59,410 --> 00:10:01,173
‫E infatti lo ha fatto.

179
00:10:02,490 --> 00:10:04,090
‫Quindi, 3. 6 ora e, naturalmente, il numero è

180
00:10:04,090 --> 00:10:07,400
‫ancora cinque perché non hai aggiunto una nuova recensione.

181
00:10:07,400 --> 00:10:10,400
‫Quindi funziona alla grande con l'aggiornamento, ora

182
00:10:10,400 --> 00:10:12,700
‫proviamolo anche con l'eliminazione.

183
00:10:12,700 --> 00:10:15,463
‫Quindi andiamo avanti e cancelliamo

184
00:10:17,470 --> 00:10:21,710
‫la recensione che abbiamo appena aggiornato e quindi ora

185
00:10:23,350 --> 00:10:26,860
‫dovremmo essere solo quattro, e infatti, eccoci qui.

186
00:10:26,860 --> 00:10:28,550
‫Quindi ora, solo quattro.

187
00:10:28,550 --> 00:10:30,100
‫Ed effettivamente eliminiamoli tutti.

188
00:10:30,100 --> 00:10:32,053
‫Quindi, questo è il prossimo.

189
00:10:35,410 --> 00:10:36,723
‫Ah, eccoci qui.

190
00:10:45,038 --> 00:10:46,180
‫Poi anche questo.

191
00:10:46,180 --> 00:10:47,303
‫Quindi, ora dovremmo

192
00:10:53,560 --> 00:10:55,760
‫essere solo tre o, in realtà,

193
00:10:56,970 --> 00:11:00,350
‫ce ne sono rimasti solo due con una media di quattro.

194
00:11:00,350 --> 00:11:01,893
‫Quindi vediamo quale ci rimane ancora.

195
00:11:05,600 --> 00:11:08,300
‫Quindi è questo con tre e questo con cinque.

196
00:11:08,300 --> 00:11:12,330
‫Ed ecco perché abbiamo questa media di quattro.

197
00:11:12,330 --> 00:11:15,203
‫Quindi liberiamoci di questo e quindi ora la nostra

198
00:11:19,210 --> 00:11:21,320
‫media dovrebbe essere cinque, giusto?

199
00:11:21,320 --> 00:11:25,020
‫O addirittura tre perché l'unico rimasto ne

200
00:11:25,020 --> 00:11:26,340
‫ha tre.

201
00:11:26,340 --> 00:11:29,340
‫E ora il test finale, l'eliminazione dell'ultimo,

202
00:11:29,340 --> 00:11:33,350
‫solo per vedere cosa succederà una volta che lo avremo fatto.

203
00:11:33,350 --> 00:11:35,993
‫E qui otteniamo un errore.

204
00:11:41,070 --> 00:11:42,530
‫Quindi, non è possibile leggere la proprietà nRating di undefined.

205
00:11:42,530 --> 00:11:46,400
‫Quindi questo è calcAverageRatings alla riga numero 69.

206
00:11:46,400 --> 00:11:50,683
‫Quindi, non so cosa sia.

207
00:11:53,280 --> 00:11:54,903
‫Quindi, riga 69, e quindi, è questo problema qui.

208
00:11:55,760 --> 00:12:00,440
‫Quindi stiamo cercando di leggere nRating di undefined.

209
00:12:00,440 --> 00:12:03,530
‫Quindi le statistiche zero sono sostanzialmente indefinite.

210
00:12:03,530 --> 00:12:06,420
‫E questo perché se non ci sono documenti

211
00:12:06,420 --> 00:12:09,400
‫che corrispondono a questa query qui in pratica, beh,

212
00:12:09,400 --> 00:12:11,780
‫allora otteniamo semplicemente un array vuoto.

213
00:12:11,780 --> 00:12:13,947
‫E quindi è proprio quello che abbiamo quaggiù.

214
00:12:13,947 --> 00:12:17,100
‫Quindi questo è l'array delle statistiche e quindi in questo

215
00:12:17,100 --> 00:12:19,350
‫momento non ha alcun risultato, ok,

216
00:12:19,350 --> 00:12:22,630
‫quindi dovremmo eseguire questo pezzo di codice qui solo ogni

217
00:12:22,630 --> 00:12:25,500
‫volta che effettivamente abbiamo qualcosa nell'array delle statistiche.

218
00:12:25,500 --> 00:12:28,653
‫Quindi facciamolo.

219
00:12:29,810 --> 00:12:30,903
‫Quindi se le statistiche. la lunghezza

220
00:12:31,760 --> 00:12:36,760
‫è maggiore di zero, beh, allora fallo.

221
00:12:40,090 --> 00:12:42,623
‫E se no, beh, in pratica significa che

222
00:12:45,450 --> 00:12:48,100
‫tutte le nostre recensioni sono sparite, beh, allora

223
00:12:48,100 --> 00:12:50,260
‫in pratica vogliamo tornare all'impostazione predefinita.

224
00:12:50,260 --> 00:12:54,280
‫Quindi lo imposteremo alla quantità

225
00:12:54,280 --> 00:12:58,780
‫di zero e alla media di 4. 5, che ricorda, è l'impostazione predefinita quando non ci

226
00:12:58,780 --> 00:13:02,030
‫sono recensioni.

227
00:13:02,030 --> 00:13:04,943
‫Quindi creiamo rapidamente una nuova recensione, e può

228
00:13:08,540 --> 00:13:10,823
‫essere questa, va bene, quindi siamo

229
00:13:12,200 --> 00:13:13,150
‫tornati ad

230
00:13:15,880 --> 00:13:19,400
‫avere una valutazione e ora la cancelliamo subito, solo per

231
00:13:19,400 --> 00:13:20,780
‫testare quel pezzo

232
00:13:20,780 --> 00:13:24,963
‫di codice che abbiamo appena scritto, solo per vederlo qui anche,

233
00:13:28,080 --> 00:13:30,310
‫quindi una valutazione, media cinque.

234
00:13:30,310 --> 00:13:32,573
‫E ora quando lo eliminiamo,

235
00:13:33,850 --> 00:13:36,113
‫non riceviamo più un errore.

236
00:13:38,910 --> 00:13:41,790
‫E nel nostro tour, siamo tornati

237
00:13:41,790 --> 00:13:45,630
‫a zero e un valore predefinito di 4. 5.

238
00:13:45,630 --> 00:13:48,450
‫Va bene, va bene, va bene, perfetto.

239
00:13:48,450 --> 00:13:51,560
‫Quindi prendiamo ancora solo un secondo veloce

240
00:13:51,560 --> 00:13:54,920
‫qui per ricapitolare quello che abbiamo appena fatto.

241
00:13:54,920 --> 00:13:57,090
‫Quindi, per poter eseguire questa funzione

242
00:13:57,090 --> 00:13:59,970
‫anche in fase di aggiornamento e cancellazione, abbiamo effettivamente

243
00:13:59,970 --> 00:14:02,320
‫bisogno di utilizzare il middleware di query

244
00:14:02,320 --> 00:14:04,590
‫che Mongoose ci fornisce per queste situazioni.

245
00:14:04,590 --> 00:14:07,110
‫Ok, quindi, non abbiamo un middleware per

246
00:14:07,110 --> 00:14:11,230
‫documenti a portata di mano, che funziona, per queste funzioni, ma

247
00:14:11,230 --> 00:14:13,140
‫invece abbiamo bisogno di

248
00:14:13,140 --> 00:14:15,880
‫usare il middleware di query, e in

249
00:14:15,880 --> 00:14:18,660
‫quello non abbiamo accesso direttamente al documento corrente.

250
00:14:18,660 --> 00:14:20,090
‫E quindi dobbiamo

251
00:14:20,090 --> 00:14:21,540
‫aggirare il problema usando questo

252
00:14:21,540 --> 00:14:24,870
‫findOne qui, e quindi fondamentalmente recuperando il documento corrente dal database.

253
00:14:24,870 --> 00:14:27,340
‫Quindi lo memorizziamo nella variabile di

254
00:14:27,340 --> 00:14:30,450
‫query corrente, e quindi è questo, e così facendo,

255
00:14:30,450 --> 00:14:32,950
‫otteniamo l'accesso ad esso nel middleware post.

256
00:14:32,950 --> 00:14:36,480
‫Ed è solo nel post middleware che calcoliamo effettivamente

257
00:14:36,480 --> 00:14:38,610
‫le statistiche per le recensioni.

258
00:14:38,610 --> 00:14:42,500
‫E ricorda che lo facciamo in questo modo perché se

259
00:14:42,500 --> 00:14:44,370
‫lo facessimo correttamente in

260
00:14:44,370 --> 00:14:47,380
‫questa funzione middleware, i dati sottostanti non sarebbero

261
00:14:47,380 --> 00:14:50,100
‫stati aggiornati a quel punto e

262
00:14:50,100 --> 00:14:53,150
‫quindi le statistiche calcolate non sarebbero state aggiornate.

263
00:14:53,150 --> 00:14:55,150
‫Ed ecco perché abbiamo usato questo processo in

264
00:14:55,150 --> 00:14:56,540
‫due fasi qui fondamentalmente.

265
00:14:56,540 --> 00:14:58,963
‫Ora, liberiamoci di questa console. log qui, visto che ora abbiamo finito, e anche

266
00:15:00,020 --> 00:15:02,220
‫di queste statistiche.

267
00:15:03,130 --> 00:15:06,883
‫Quindi, spero che questo sia stato divertente per

268
00:15:08,270 --> 00:15:11,390
‫te e non troppo travolgente.

269
00:15:11,390 --> 00:15:13,890
‫Ho progettato questo esercizio in modo specifico in

270
00:15:13,890 --> 00:15:16,390
‫modo da poter risolvere un problema aziendale

271
00:15:16,390 --> 00:15:19,270
‫reale utilizzando tutti gli strumenti che Mongoose ci offre.

272
00:15:19,270 --> 00:15:22,150
‫E quindi, con questo, spero che tu abbia imparato un

273
00:15:22,150 --> 00:15:24,500
‫po' meglio come lavorare con tutti questi diversi

274
00:15:24,500 --> 00:15:26,980
‫middleware in situazioni diverse ogni volta che è necessario

275
00:15:26,980 --> 00:15:29,220
‫in una situazione del mondo reale.

276
00:15:29,220 --> 00:15:31,640
‫Quindi, ottimo lavoro per aver terminato questa

277
00:15:31,640 --> 00:15:35,700
‫lezione piuttosto impegnativa e per essere ancora con me a questo punto del corso.

278
00:15:35,700 --> 00:15:39,030
‫È davvero bello per me da vedere, quindi ne

279
00:15:39,030 --> 00:15:40,594
‫sono davvero felice.

280
00:15:40,594 --> 00:15:43,500
‫Ma comunque, ci sono ancora altri fantastici contenuti

281
00:15:43,500 --> 00:15:46,780
‫in arrivo in questa sezione, quindi ora andiamo avanti insieme,

282
00:15:46,780 --> 00:15:48,290
‫direttamente al prossimo video.

