﻿1
00:00:01,010 --> 00:00:03,970
‫Istruttore: Va bene, e ora solo per finire

2
00:00:03,970 --> 00:00:07,183
‫questa parte, creiamo alcune fabbriche per ottenere i documenti.

3
00:00:08,740 --> 00:00:11,963
‫E iniziamo con getOne qui, ok?

4
00:00:12,910 --> 00:00:17,910
‫Esportazioni. getOne, ma questo in realtà è un po'

5
00:00:18,580 --> 00:00:20,690
‫più complicato, ed è perché abbiamo

6
00:00:20,690 --> 00:00:22,710
‫un popolamento nel gestore getTour.

7
00:00:22,710 --> 00:00:24,803
‫Quindi, diamo un'occhiata a questo.

8
00:00:25,900 --> 00:00:30,090
‫Quindi, proprio qui, in questo, abbiamo questo popolano qui, che è

9
00:00:30,090 --> 00:00:32,570
‫diverso da tutti gli altri

10
00:00:32,570 --> 00:00:35,220
‫gestori di get nelle altre risorse, giusto?

11
00:00:35,220 --> 00:00:37,620
‫Ma, beh, questo non

12
00:00:37,620 --> 00:00:40,670
‫è davvero un problema perché ci permetteremo

13
00:00:40,670 --> 00:00:45,670
‫semplicemente di passare un oggetto opzioni popolate nella nostra funzione getOne, ok?

14
00:00:48,030 --> 00:00:50,840
‫Quindi, invece di passare semplicemente

15
00:00:50,840 --> 00:00:55,700
‫nel modello, avremo anche popolato, quindi opzioni, va bene.

16
00:00:57,890 --> 00:01:00,370
‫E così, da qui restituiremo la

17
00:01:00,370 --> 00:01:02,053
‫normale funzione del gestore.

18
00:01:03,360 --> 00:01:06,563
‫Quindi, andiamo avanti e copiamo di nuovo tutto questo,

19
00:01:10,850 --> 00:01:11,683
‫va bene.

20
00:01:13,730 --> 00:01:15,330
‫Quindi, non abbiamo bisogno di questo qui.

21
00:01:17,690 --> 00:01:19,743
‫Poi ecco, come

22
00:01:23,140 --> 00:01:25,800
‫sempre, il modello, ed eccolo doc.

23
00:01:25,800 --> 00:01:27,993
‫Bene, in realtà qui, documento,

24
00:01:30,520 --> 00:01:33,850
‫e qui, ancora una volta, dati pari a doc.

25
00:01:33,850 --> 00:01:36,210
‫Ora, dobbiamo anche apportare alcune

26
00:01:36,210 --> 00:01:38,390
‫modifiche qui ora a causa

27
00:01:38,390 --> 00:01:41,610
‫di questo popolamento, quindi in pratica, creeremo prima

28
00:01:41,610 --> 00:01:44,950
‫la query e poi, se c'è l'oggetto opzioni

29
00:01:44,950 --> 00:01:46,550
‫di popolamento, lo

30
00:01:46,550 --> 00:01:50,810
‫aggiungeremo alla query, e poi dal fine, attendi quella query, ok?

31
00:01:50,810 --> 00:01:51,643
‫Ha senso?

32
00:01:53,390 --> 00:01:55,890
‫Allora, traduciamo quello che ho appena detto.

33
00:01:55,890 --> 00:02:00,773
‫Quindi, la query è semplicemente uguale a Model. findById, così,

34
00:02:02,770 --> 00:02:04,993
‫giusto?

35
00:02:06,630 --> 00:02:10,980
‫Quindi, se esiste un oggetto opzioni popola,

36
00:02:10,980 --> 00:02:12,193
‫beh,

37
00:02:13,420 --> 00:02:15,020
‫in tal caso,

38
00:02:15,020 --> 00:02:20,020
‫la query sarà query. compilare con le opzioni di popolamento, ok?

39
00:02:24,410 --> 00:02:27,370
‫E poi, finalmente aspettiamo la nostra query e

40
00:02:27,370 --> 00:02:28,853
‫la salviamo nel documento.

41
00:02:30,010 --> 00:02:35,010
‫Quindi, attendi la query proprio come questa, d'accordo.

42
00:02:36,210 --> 00:02:38,660
‫E così, in realtà è così.

43
00:02:38,660 --> 00:02:40,360
‫Quindi, questa logica che

44
00:02:40,360 --> 00:02:43,200
‫abbiamo qui con non aspettare la query subito, ma

45
00:02:43,200 --> 00:02:45,300
‫invece semplicemente salvarla in una variabile,

46
00:02:45,300 --> 00:02:48,220
‫in modo che possiamo quindi, nel passaggio successivo, manipolarla.

47
00:02:48,220 --> 00:02:50,770
‫In realtà abbiamo già fatto questo genere

48
00:02:50,770 --> 00:02:54,020
‫di cose prima quando stavamo costruendo le nostre funzionalità API, giusto?

49
00:02:54,020 --> 00:02:57,210
‫Quindi, solo alla fine, quando l'intera query sarà pronta,

50
00:02:57,210 --> 00:03:00,563
‫la aspetteremo e la memorizzeremo da qualche parte in una variabile.

51
00:03:02,260 --> 00:03:06,600
‫Ora, andiamo avanti e usiamo effettivamente questo ovunque, iniziando

52
00:03:06,600 --> 00:03:08,803
‫ovviamente con il Tour.

53
00:03:10,470 --> 00:03:12,170
‫Quindi, getTour sarà ora

54
00:03:13,670 --> 00:03:15,473
‫di fabbrica. getOne

55
00:03:18,260 --> 00:03:20,900
‫e passa nell'oggetto

56
00:03:20,900 --> 00:03:24,440
‫Tour e popola opzioni, ricordi?

57
00:03:24,440 --> 00:03:29,440
‫E quindi, quello che faremo è dire percorso e recensioni.

58
00:03:31,590 --> 00:03:35,540
‫Giusto, quindi ricorda che la proprietà del percorso

59
00:03:35,540 --> 00:03:37,720
‫è fondamentalmente il

60
00:03:37,720 --> 00:03:40,950
‫campo che vogliamo popolare, e quindi possiamo

61
00:03:40,950 --> 00:03:43,750
‫anche specificare select, quindi ricorda questo,

62
00:03:43,750 --> 00:03:47,770
‫dove specifichiamo quale dei campi vogliamo effettivamente ottenere, giusto?

63
00:03:47,770 --> 00:03:48,603
‫Ma in

64
00:03:48,603 --> 00:03:50,050
‫questo caso, non abbiamo niente

65
00:03:50,050 --> 00:03:51,900
‫di tutto questo, quindi lasciamolo così.

66
00:03:53,180 --> 00:03:57,723
‫E ora, possiamo effettivamente andare avanti ed eliminare tutto questo.

67
00:03:58,910 --> 00:04:00,570
‫Quindi, fantastico.

68
00:04:00,570 --> 00:04:03,473
‫E, giusto per essere sicuri, testiamolo rapidamente.

69
00:04:06,200 --> 00:04:07,963
‫Quindi, faremo un certo Tour e,

70
00:04:10,880 --> 00:04:12,630
‫in effetti, funziona ancora.

71
00:04:12,630 --> 00:04:15,503
‫Vediamo se questo ha avuto qualche recensione.

72
00:04:16,630 --> 00:04:19,210
‫Oh, sì, in realtà lo fa,

73
00:04:19,210 --> 00:04:22,993
‫e vedi che anche il processo di popolazione sta ancora funzionando.

74
00:04:24,920 --> 00:04:28,177
‫Quindi, che ha avuto successo, direi.

75
00:04:28,177 --> 00:04:30,870
‫E così, ora usiamo anche questo getOne in

76
00:04:30,870 --> 00:04:32,710
‫tutte le altre risorse.

77
00:04:32,710 --> 00:04:36,833
‫Quindi, il controller utente qui dove abbiamo,

78
00:04:38,200 --> 00:04:40,603
‫vediamo dov'è, ah, quaggiù.

79
00:04:43,760 --> 00:04:47,047
‫Quindi, diciamo fabbrica. getOne, ma

80
00:04:48,930 --> 00:04:52,290
‫solo con il modello utente e nessun

81
00:04:52,290 --> 00:04:54,343
‫oggetto opzioni di popolamento.

82
00:04:56,900 --> 00:04:58,740
‫Ok, e dal momento che

83
00:04:58,740 --> 00:05:02,030
‫siamo qui, in realtà cambiamo semplicemente il messaggio di

84
00:05:02,030 --> 00:05:03,850
‫errore qui per creare

85
00:05:03,850 --> 00:05:07,583
‫utente, quindi questo percorso non è definito, non lo sarà mai

86
00:05:08,980 --> 00:05:11,703
‫e per favore usa invece la registrazione.

87
00:05:17,010 --> 00:05:19,110
‫Il prossimo, e

88
00:05:19,110 --> 00:05:23,410
‫infine, la stessa cosa per le recensioni fondamentalmente.

89
00:05:23,410 --> 00:05:25,063
‫Quindi, esportazioni. getReview

90
00:05:29,018 --> 00:05:31,427
‫è uguale fabbrica. getOne recensione,

91
00:05:35,450 --> 00:05:40,193
‫e penso che non abbiamo ancora (borbotta) le nostre rotte.

92
00:05:41,360 --> 00:05:46,357
‫E, in effetti, non lo facciamo, quindi aggiungendo questo molto veloce

93
00:05:46,357 --> 00:05:49,107
‫qui, reviewController. getReview, ok?

94
00:05:54,300 --> 00:05:56,423
‫Proviamo velocemente anche questo, solo

95
00:05:58,870 --> 00:06:01,300
‫perché voglio aggiungerlo anche qui

96
00:06:01,300 --> 00:06:03,203
‫a Postman, ok?

97
00:06:04,950 --> 00:06:08,453
‫Quindi, solo copiando questo perché è simile, e poi,

98
00:06:10,560 --> 00:06:12,393
‫in effetti, è get.

99
00:06:15,300 --> 00:06:20,300
‫E, sì, funziona perfettamente, memorizzalo qui nelle recensioni

100
00:06:23,730 --> 00:06:24,987
‫e getReview.

101
00:06:28,258 --> 00:06:30,560
‫Va bene, ora tutto

102
00:06:30,560 --> 00:06:35,560
‫ciò che manca è fondamentalmente una funzione di fabbrica getAll, giusto?

103
00:06:36,070 --> 00:06:37,320
‫Quindi, fondamentalmente,

104
00:06:39,200 --> 00:06:42,380
‫per sostituire questo getAllTours, getAllUsers, che dovremmo

105
00:06:42,380 --> 00:06:46,003
‫anche avere da qualche parte qui, quindi getAllUsers e

106
00:06:46,970 --> 00:06:50,530
‫anche getAllReviews, quindi copiamolo di nuovo qui dal controller

107
00:06:50,530 --> 00:06:53,540
‫del tour perché in realtà questo è

108
00:06:53,540 --> 00:06:56,380
‫quello che è davvero completo perché

109
00:06:56,380 --> 00:06:59,920
‫ha tutto queste funzionalità API e quindi, dopo

110
00:06:59,920 --> 00:07:03,390
‫aver creato la nostra funzione di fabbrica getAll,

111
00:07:03,390 --> 00:07:07,083
‫tutte e tre le risorse otterranno queste funzionalità API.

112
00:07:09,299 --> 00:07:12,840
‫Quindi, di nuovo, copiando tutto questo,

113
00:07:15,230 --> 00:07:17,433
‫esporta. getAll,

114
00:07:24,630 --> 00:07:28,390
‫quindi ora dovremo effettivamente richiedere queste funzionalità

115
00:07:28,390 --> 00:07:29,743
‫API qui,

116
00:07:31,690 --> 00:07:35,780
‫e infatti possiamo effettivamente rimuoverle da qui perché

117
00:07:35,780 --> 00:07:38,320
‫non ne avremo più

118
00:07:38,320 --> 00:07:43,277
‫bisogno perché ora lo trasferiamo alla fabbrica dell'handler, giusto?

119
00:07:45,360 --> 00:07:49,403
‫Ora, qui tutto ciò che dobbiamo fare è sostituire,

120
00:07:50,370 --> 00:07:53,243
‫come sempre, con modello, e poi

121
00:07:56,300 --> 00:07:58,703
‫qui, doc e dati.

122
00:08:01,700 --> 00:08:03,253
‫Ora, ok, perfetto.

123
00:08:07,480 --> 00:08:09,133
‫Quindi, vediamo

124
00:08:13,947 --> 00:08:17,453
‫se funziona, getAll con Tour.

125
00:08:22,530 --> 00:08:25,530
‫E ora, voglio davvero vedere se

126
00:08:25,530 --> 00:08:28,300
‫funziona ancora con tutte queste funzionalità,

127
00:08:28,300 --> 00:08:31,380
‫quindi è qui, getAll Tours, e

128
00:08:31,380 --> 00:08:33,830
‫quindi, aggiungiamo la nostra

129
00:08:33,830 --> 00:08:38,467
‫stringa di query qui, e diciamo la durata maggiore o

130
00:08:43,040 --> 00:08:47,063
‫uguale di diciamo un 10, e ordiniamo per prezzo.

131
00:08:50,470 --> 00:08:53,133
‫Ok, quindi otteniamo due risultati qui.

132
00:08:56,170 --> 00:08:58,490
‫Ok, non funziona.

133
00:08:58,490 --> 00:09:03,030
‫Ad ogni modo, qui otteniamo i due risultati (ridacchia),

134
00:09:03,030 --> 00:09:06,290
‫ed entrambi hanno una durata maggiore di

135
00:09:06,290 --> 00:09:09,360
‫10, e il prezzo è

136
00:09:09,360 --> 00:09:13,420
‫1497, e il secondo è più alto, ok?

137
00:09:13,420 --> 00:09:15,810
‫Mettiamolo qui come sette, così otteniamo un

138
00:09:15,810 --> 00:09:17,673
‫po' più di risultati.

139
00:09:19,949 --> 00:09:21,249
‫Ok, e ora ne prendiamo cinque.

140
00:09:23,560 --> 00:09:27,480
‫Ok, comunque, ora facciamo lo stesso per le recensioni

141
00:09:28,910 --> 00:09:32,440
‫perché sono davvero entusiasta di testare queste funzionalità

142
00:09:32,440 --> 00:09:34,350
‫API anche sulle recensioni.

143
00:09:34,350 --> 00:09:36,510
‫Ora, un problema che abbiamo qui

144
00:09:36,510 --> 00:09:39,740
‫è che questo gestore di route ha effettivamente queste due

145
00:09:40,706 --> 00:09:44,610
‫righe di codice che tutti gli altri gestori getAll non hanno, ok?

146
00:09:44,610 --> 00:09:47,730
‫Ma quello che faremo qui è semplicemente copiare questo

147
00:09:47,730 --> 00:09:50,730
‫codice anche nella nostra fabbrica di gestori, ok?

148
00:09:50,730 --> 00:09:52,150
‫È una specie

149
00:09:52,150 --> 00:09:56,040
‫di hack perché abbiamo davvero bisogno di questo solo per

150
00:09:56,040 --> 00:09:59,210
‫getAll recensioni, ma aggirare questo sarebbe un po'

151
00:09:59,210 --> 00:10:02,500
‫troppo lavoro qui in questa situazione, e ancora una

152
00:10:02,500 --> 00:10:05,623
‫volta, voglio semplicemente mantenerlo semplice qui, va bene.

153
00:10:07,010 --> 00:10:08,593
‫Quindi, copiamo

154
00:10:10,530 --> 00:10:15,150
‫questo qui e aggiungo un commento

155
00:10:16,500 --> 00:10:21,500
‫qui per consentire getReviews nidificati in tour, ok?

156
00:10:24,980 --> 00:10:29,533
‫E quindi questo filtro, lo passeremo anche qui, ok?

157
00:10:31,260 --> 00:10:33,363
‫Quindi di nuovo, questo è

158
00:10:35,400 --> 00:10:37,460
‫un piccolo trucco, ma

159
00:10:37,460 --> 00:10:41,770
‫lo lascerò qui così perché penso che sia ragionevole, va bene.

160
00:10:41,770 --> 00:10:44,223
‫Comunque, ora liberiamoci di questo,

161
00:10:45,260 --> 00:10:48,373
‫quindi fabbrica. getAll e rivedi, ok?

162
00:10:54,476 --> 00:10:57,493
‫Mettiamolo qui accanto a tutti gli altri.

163
00:11:02,430 --> 00:11:03,430
‫E ora,

164
00:11:03,430 --> 00:11:07,340
‫come vedi, in realtà non abbiamo nemmeno più bisogno di questo

165
00:11:07,340 --> 00:11:09,200
‫catchAsync qui, quindi lo commenterò

166
00:11:09,200 --> 00:11:12,300
‫qui perché, chissà, forse in futuro ne avremo

167
00:11:12,300 --> 00:11:15,523
‫bisogno per qualche altra funzione Middleware qui, tutto Giusto.

168
00:11:16,870 --> 00:11:18,660
‫Quindi, sembra bello e

169
00:11:18,660 --> 00:11:21,783
‫pulito, e ora testiamo le recensioni di getAll.

170
00:11:23,420 --> 00:11:28,420
‫Va bene, quindi salviamo anche qui le modifiche.

171
00:11:30,240 --> 00:11:32,310
‫Questi non ci servono,

172
00:11:32,310 --> 00:11:36,143
‫ma in realtà voglio avere tutte le recensioni.

173
00:11:37,530 --> 00:11:39,743
‫Quindi, in questo momento abbiamo

174
00:11:40,980 --> 00:11:43,430
‫quattro recensioni, quindi proviamo a filtrare solo

175
00:11:43,430 --> 00:11:46,853
‫per le recensioni con un punteggio di quattro, diciamo.

176
00:11:48,860 --> 00:11:53,860
‫Quindi, stringa di query, valutazione uguale a quattro.

177
00:11:57,820 --> 00:12:00,170
‫Oh, e funziona davvero,

178
00:12:00,170 --> 00:12:02,850
‫così bello, è davvero carino.

179
00:12:02,850 --> 00:12:06,780
‫Quindi, proprio in questo modo, abbiamo accesso a tutte queste

180
00:12:06,780 --> 00:12:11,780
‫funzionalità API come il filtro, l'ordinamento, l'impaginazione e tutte quelle cose buone che

181
00:12:11,810 --> 00:12:13,988
‫abbiamo implementato (ridacchia) molto tempo fa

182
00:12:13,988 --> 00:12:15,890
‫durante il corso, giusto?

183
00:12:15,890 --> 00:12:17,380
‫E voglio anche

184
00:12:17,380 --> 00:12:21,423
‫assicurarmi che anche questa recensione di getAll su Tour funzioni ancora.

185
00:12:22,300 --> 00:12:24,120
‫Quindi, controlliamo e,

186
00:12:24,120 --> 00:12:26,893
‫sì, vedi che lo fa davvero.

187
00:12:28,050 --> 00:12:30,380
‫Quindi, il Tour ID che

188
00:12:30,380 --> 00:12:34,490
‫abbiamo qui è esattamente quello qui e proprio qui.

189
00:12:34,490 --> 00:12:36,840
‫Quindi, anche quello

190
00:12:36,840 --> 00:12:39,580
‫funziona ancora, quindi usiamo finalmente

191
00:12:39,580 --> 00:12:44,060
‫anche getAll per il controller utente, va bene.

192
00:12:44,060 --> 00:12:46,733
‫Quindi, sostanzialmente sostituendo semplicemente

193
00:12:47,760 --> 00:12:52,760
‫questo, quindi fabbrica. utente getAll, va bene.

194
00:12:55,180 --> 00:12:57,174
‫E, in effetti,

195
00:12:57,174 --> 00:13:01,483
‫mettiamo questo qui vicino agli altri, va bene.

196
00:13:04,960 --> 00:13:06,910
‫E poi anche questo, quindi

197
00:13:06,910 --> 00:13:09,650
‫in pratica avendo tutti questi generati dalle funzioni

198
00:13:09,650 --> 00:13:11,590
‫di fabbrica insieme, e

199
00:13:11,590 --> 00:13:14,383
‫poi tutti gli altri semplicemente sopra di loro.

200
00:13:15,800 --> 00:13:18,580
‫Va bene, facciamo lo stesso qui, questo è

201
00:13:18,580 --> 00:13:20,290
‫già bello e pulito,

202
00:13:20,290 --> 00:13:23,153
‫e lo stesso per il controller Tour, quindi

203
00:13:24,170 --> 00:13:25,620
‫cos'altro abbiamo qui?

204
00:13:27,430 --> 00:13:29,263
‫Di questo possiamo

205
00:13:30,690 --> 00:13:34,000
‫sbarazzarci e, ok, penso che sia carino così.

206
00:13:34,000 --> 00:13:37,150
‫Di nuovo, possiamo commentare questo pezzo di codice

207
00:13:37,150 --> 00:13:40,410
‫perché, almeno per ora, non ne abbiamo più bisogno.

208
00:13:40,410 --> 00:13:44,623
‫E così, giusto per testarlo di nuovo qui con gli

209
00:13:45,640 --> 00:13:47,423
‫utenti, mettiamoli tutti insieme,

210
00:13:48,890 --> 00:13:50,973
‫e, in effetti, eccoli qui.

211
00:13:53,320 --> 00:13:55,960
‫Ora possiamo anche dire che

212
00:13:55,960 --> 00:13:58,873
‫vogliamo solo quelli con il ruolo

213
00:14:00,490 --> 00:14:03,760
‫di utente e, in effetti, funziona anche così.

214
00:14:03,760 --> 00:14:07,500
‫Fantastico, e questo in realtà conclude questa parte della creazione

215
00:14:07,500 --> 00:14:10,170
‫delle funzioni di fabbrica dell'handler, e

216
00:14:10,170 --> 00:14:14,300
‫questo è stato davvero un enorme passo avanti nel nostro progetto,

217
00:14:14,300 --> 00:14:16,030
‫quindi ricorda che,

218
00:14:16,030 --> 00:14:18,710
‫un po' più tardi, creeremo anche una

219
00:14:18,710 --> 00:14:22,080
‫risorsa di prenotazione, e quindi vedi che probabilmente noi

220
00:14:22,080 --> 00:14:25,070
‫saremo in grado di creare l'API principale per

221
00:14:25,070 --> 00:14:27,310
‫queste prenotazioni in cinque secondi

222
00:14:27,310 --> 00:14:32,310
‫o qualcosa del genere, semplicemente usando queste cinque funzioni di fabbrica, va bene.

223
00:14:32,350 --> 00:14:34,750
‫Comunque, buon lavoro, ottimo lavoro, e

224
00:14:34,750 --> 00:14:36,683
‫ci vediamo alla prossima.

