﻿1
00:00:01,042 --> 00:00:02,080
‫Istruttore: In

2
00:00:02,080 --> 00:00:04,790
‫questo video implementeremo la pagina delle mie prenotazioni.

3
00:00:04,790 --> 00:00:07,200
‫Quindi, in pratica, renderemo una bella pagina

4
00:00:07,200 --> 00:00:10,183
‫contenente tutti i tour che un utente ha prenotato.

5
00:00:11,950 --> 00:00:15,920
‫E iniziamo aggiungendo un nuovo percorso alla nostra viewRoutes.

6
00:00:17,120 --> 00:00:21,320
‫Ok, quindi abbiamo me e quindi creiamo

7
00:00:21,320 --> 00:00:23,253
‫i miei-tour.

8
00:00:24,720 --> 00:00:29,720
‫Quindi sto duplicando questo, my-tours, quindi anche questo percorso deve essere

9
00:00:29,740 --> 00:00:32,230
‫protetto in modo che solo

10
00:00:32,230 --> 00:00:34,090
‫gli utenti attualmente

11
00:00:34,090 --> 00:00:37,150
‫registrati possano accedere a questa pagina, ovviamente.

12
00:00:37,150 --> 00:00:39,020
‫E poi, nel nostro

13
00:00:39,020 --> 00:00:41,723
‫viewsController, avremo un controller chiamato getMyTours.

14
00:00:44,029 --> 00:00:47,480
‫MyTours così, ok?

15
00:00:47,480 --> 00:00:49,943
‫E per ora è tutto,

16
00:00:50,930 --> 00:00:54,123
‫quindi andiamo avanti e creiamo questo controller ora.

17
00:00:56,090 --> 00:00:59,030
‫Ok, quindi abbiamo tutte queste informazioni qui,

18
00:00:59,030 --> 00:01:02,790
‫fai il tour, ottieni il modulo di accesso, ottieni l'account.

19
00:01:02,790 --> 00:01:04,853
‫Quindi mettiamo anche questo qui.

20
00:01:12,559 --> 00:01:14,690
‫E quindi ora, ciò che dobbiamo

21
00:01:14,690 --> 00:01:18,060
‫fare qui è trovare tutti i tour che l'utente ha prenotato.

22
00:01:18,060 --> 00:01:21,050
‫Quindi, in pratica, prima dobbiamo trovare tutte le prenotazioni

23
00:01:21,050 --> 00:01:23,170
‫per gli utenti attualmente registrati che

24
00:01:23,170 --> 00:01:25,620
‫ci daranno un mucchio di ID tour,

25
00:01:25,620 --> 00:01:28,503
‫e poi dobbiamo trovare i tour con quegli ID.

26
00:01:29,400 --> 00:01:34,400
‫Quindi, in pratica, trova tutte le prenotazioni e poi

27
00:01:39,790 --> 00:01:44,340
‫trova i tour con gli ID restituiti.

28
00:01:44,340 --> 00:01:48,890
‫Quindi fondamentalmente gli ID delle prenotazioni per l'utente, giusto?

29
00:01:48,890 --> 00:01:50,720
‫Ora, invece, potremmo anche fare

30
00:01:50,720 --> 00:01:53,440
‫un popolamento virtuale sui tour, e sarebbe bello

31
00:01:53,440 --> 00:01:55,413
‫se lo implementassi da solo

32
00:01:55,413 --> 00:01:59,130
‫esattamente come abbiamo fatto prima con i tour e le recensioni,

33
00:01:59,130 --> 00:02:01,240
‫ma qui in questa funzione in

34
00:02:01,240 --> 00:02:04,040
‫realtà volevo per mostrarti come possiamo farlo manualmente

35
00:02:04,040 --> 00:02:05,710
‫perché penso che

36
00:02:05,710 --> 00:02:08,290
‫sia anche abbastanza importante e in realtà

37
00:02:08,290 --> 00:02:10,067
‫una popolazione virtuale dovrebbe

38
00:02:10,067 --> 00:02:13,550
‫funzionare in qualcosa di simile a quello che faremo qui.

39
00:02:13,550 --> 00:02:16,100
‫E quindi vedi che in realtà abbiamo bisogno

40
00:02:16,100 --> 00:02:18,070
‫di due query per trovare

41
00:02:18,070 --> 00:02:20,487
‫davvero i tour corrispondenti alle prenotazioni dell'utente.

42
00:02:20,487 --> 00:02:22,850
‫Comunque, iniziamo ora, quindi creiamo

43
00:02:22,850 --> 00:02:25,753
‫una variabile per tutte le prenotazioni, attendi

44
00:02:28,751 --> 00:02:33,513
‫e ora penso che non abbiamo ancora le prenotazioni qui, no.

45
00:02:37,840 --> 00:02:39,533
‫Quindi Bookings qui e bookingModel.

46
00:02:43,010 --> 00:02:47,890
‫E qui, ovviamente, si tratta solo di prenotare, d'accordo.

47
00:02:47,890 --> 00:02:52,890
‫Quindi attendi la prenotazione. trova, e ora ricorda

48
00:02:53,530 --> 00:02:58,380
‫che ogni documento di prenotazione ha un ID utente, giusto?

49
00:02:58,380 --> 00:03:00,160
‫Quindi qui nello schema

50
00:03:00,160 --> 00:03:02,331
‫ricorda che abbiamo l'ID tour, l'ID

51
00:03:02,331 --> 00:03:04,410
‫utente e poi tutti questi altri

52
00:03:04,410 --> 00:03:05,870
‫dati, quindi quello

53
00:03:05,870 --> 00:03:09,400
‫che faremo ora è fondamentalmente interrogare dall'ID utente, ok?

54
00:03:09,400 --> 00:03:10,940
‫E quindi questo

55
00:03:10,940 --> 00:03:15,136
‫ci restituirà tutti i tour che appartengono all'utente corrente, ok?

56
00:03:15,136 --> 00:03:16,653
‫Quindi, non questo.

57
00:03:20,650 --> 00:03:23,900
‫Quindi tour dovrebbe essere uguale a req. utente. ID.

58
00:03:29,170 --> 00:03:33,790
‫Quindi qui async e, come sempre, anche catchAsync.

59
00:03:37,000 --> 00:03:39,440
‫Quindi queste prenotazioni ora contengono tutti i documenti

60
00:03:39,440 --> 00:03:41,810
‫di prenotazione per l'utente corrente, ma in

61
00:03:41,810 --> 00:03:44,690
‫realtà questo ci fornisce solo gli ID del tour.

62
00:03:44,690 --> 00:03:48,350
‫E così ora vogliamo trovare i tour con gli ID restituiti.

63
00:03:48,350 --> 00:03:50,500
‫Quindi il passaggio successivo consiste

64
00:03:50,500 --> 00:03:52,976
‫nel creare fondamentalmente un array di tutti

65
00:03:52,976 --> 00:03:55,430
‫gli ID, quindi dopo quella query per

66
00:03:55,430 --> 00:03:58,512
‫i tour che hanno uno di questi ID, ok?

67
00:03:58,512 --> 00:04:00,950
‫E questo avrà un po' più senso una

68
00:04:00,950 --> 00:04:03,973
‫volta che avremo effettivamente implementato ciò che ho appena spiegato.

69
00:04:04,830 --> 00:04:09,347
‫Quindi tourIDs è uguale alle prenotazioni e ora useremo una

70
00:04:09,347 --> 00:04:11,240
‫mappa per creare un

71
00:04:11,240 --> 00:04:14,630
‫nuovo array basato su una funzione di callback

72
00:04:15,700 --> 00:04:17,530
‫che è questa, quindi

73
00:04:17,530 --> 00:04:22,300
‫l'attuale el. tour. ID.

74
00:04:22,300 --> 00:04:25,200
‫Allora, cosa farà questo?

75
00:04:25,200 --> 00:04:28,630
‫Bene, in pratica questo passa attraverso l'intero array di prenotazioni

76
00:04:28,630 --> 00:04:32,760
‫e su ogni elemento catturerà l'el. tour.

77
00:04:32,760 --> 00:04:35,130
‫E in realtà, non abbiamo nemmeno

78
00:04:35,130 --> 00:04:39,210
‫bisogno dell'ID qui perché il tour stesso è già l'ID del tour, giusto?

79
00:04:39,210 --> 00:04:41,460
‫Quindi, alla fine, abbiamo una bella serie

80
00:04:41,460 --> 00:04:44,330
‫con tutti gli ID del tour qui e questo

81
00:04:44,330 --> 00:04:45,980
‫perché abbiamo usato una mappa.

82
00:04:49,640 --> 00:04:52,500
‫Ok, avendo tutti gli ID del

83
00:04:52,500 --> 00:04:56,233
‫tour, possiamo effettivamente ottenere i tour corrispondenti a quegli ID.

84
00:04:58,640 --> 00:05:03,640
‫Quindi aspetta Tour. find e in realtà vogliamo trovare per ID, ma non

85
00:05:07,380 --> 00:05:09,953
‫possiamo usare il . findbyid perché qui

86
00:05:10,900 --> 00:05:14,120
‫in realtà avremo bisogno di un nuovo operatore.

87
00:05:14,120 --> 00:05:15,470
‫E viene chiamato il

88
00:05:15,470 --> 00:05:17,630
‫suddetto operatore, che non so se abbiamo

89
00:05:17,630 --> 00:05:18,713
‫usato prima.

90
00:05:20,370 --> 00:05:21,810
‫Quindi, nei tourID.

91
00:05:24,320 --> 00:05:26,330
‫Quindi, in pratica, ciò

92
00:05:26,330 --> 00:05:28,370
‫che farà invece selezionerà tutti

93
00:05:28,370 --> 00:05:33,370
‫i tour che hanno un ID che si trova nell'array tourIDs, ok?

94
00:05:33,520 --> 00:05:35,277
‫Quindi è abbastanza

95
00:05:35,277 --> 00:05:37,618
‫semplice, ma è fantastico sapere

96
00:05:37,618 --> 00:05:41,720
‫che possiamo usare questo operatore molto utile qui, ok?

97
00:05:41,720 --> 00:05:43,770
‫E quindi questo è in realtà uno

98
00:05:43,770 --> 00:05:45,620
‫dei motivi per cui ho voluto

99
00:05:45,620 --> 00:05:49,200
‫farlo manualmente invece di eseguire semplicemente un popolamento virtuale come abbiamo fatto prima.

100
00:05:49,200 --> 00:05:51,760
‫Ma ancora una volta, sarebbe bello se andassi avanti

101
00:05:51,760 --> 00:05:53,760
‫e lo implementassi effettivamente anche

102
00:05:53,760 --> 00:05:55,823
‫solo per il gusto di farlo, sai.

103
00:05:57,060 --> 00:05:58,860
‫Ok, e con questo

104
00:05:58,860 --> 00:06:01,593
‫abbiamo i nostri tour pronti per essere renderizzati.

105
00:06:03,330 --> 00:06:07,385
‫Quindi, ris. lo stato come

106
00:06:07,385 --> 00:06:11,230
‫sempre, e poi renderli, va bene?

107
00:06:11,230 --> 00:06:14,100
‫E in realtà, non abbiamo nemmeno bisogno di un nuovo modello per questo.

108
00:06:14,100 --> 00:06:17,383
‫Riutilizzeremo semplicemente la panoramica, ok?

109
00:06:19,670 --> 00:06:21,300
‫Quindi finiremo con una

110
00:06:21,300 --> 00:06:23,530
‫pagina che sembra molto simile alla

111
00:06:23,530 --> 00:06:26,923
‫panoramica, ma solo con i tour che l'utente ha prenotato.

112
00:06:27,820 --> 00:06:30,456
‫Quindi, quassù e per avere una

113
00:06:30,456 --> 00:06:34,180
‫panoramica, in realtà siamo passati in tutti i tour, ok?

114
00:06:34,180 --> 00:06:36,510
‫Quindi praticamente tutti.

115
00:06:36,510 --> 00:06:38,960
‫E quindi ora avremo qualcosa di

116
00:06:38,960 --> 00:06:42,113
‫molto simile ma ovviamente solo di passaggio nei tour prenotati.

117
00:06:42,113 --> 00:06:43,653
‫Allora, dov'è?

118
00:06:47,450 --> 00:06:51,813
‫Va bene, quindi il titolo sarà I miei tour,

119
00:06:56,050 --> 00:06:59,640
‫e di nuovo passando la variabile tour.

120
00:06:59,640 --> 00:07:01,680
‫Ok e dovrebbe essere così.

121
00:07:01,680 --> 00:07:03,810
‫Ora, ovviamente, avremmo anche potuto creare

122
00:07:03,810 --> 00:07:06,550
‫una scheda completamente nuova per queste librerie con

123
00:07:06,550 --> 00:07:08,250
‫alcune informazioni più

124
00:07:08,250 --> 00:07:10,080
‫rilevanti su ciascuna delle prenotazioni,

125
00:07:10,080 --> 00:07:12,830
‫ma in questo caso non è molto importante.

126
00:07:12,830 --> 00:07:14,290
‫Ora, giusto?

127
00:07:14,290 --> 00:07:16,480
‫Quindi, siamo effettivamente pronti a

128
00:07:16,480 --> 00:07:20,040
‫testarlo perché abbiamo già implementato il percorso qui prima.

129
00:07:20,040 --> 00:07:22,620
‫E quindi questo è il mio tour.

130
00:07:22,620 --> 00:07:25,750
‫Oh, ma in realtà impostiamo questo collegamento qui

131
00:07:25,750 --> 00:07:28,240
‫proprio nella pagina dell'account utente.

132
00:07:28,240 --> 00:07:31,380
‫Quindi questo mio-tour dovrebbe ovviamente

133
00:07:31,380 --> 00:07:35,066
‫avere il proprio link proprio qui nell'account.

134
00:07:35,066 --> 00:07:36,633
‫Quindi in quella colonna

135
00:07:37,860 --> 00:07:40,777
‫di sinistra, quindi è proprio qui in Le mie

136
00:07:40,777 --> 00:07:42,560
‫prenotazioni, quindi abbiamo questo primo

137
00:07:42,560 --> 00:07:44,949
‫qui che è per il collegamento, ricorda.

138
00:07:44,949 --> 00:07:48,800
‫E quindi in questo momento, praticamente tutti non indicano dove, ma ora

139
00:07:48,800 --> 00:07:51,453
‫per le prenotazioni abbiamo effettivamente un collegamento.

140
00:07:51,453 --> 00:07:56,453
‫E quindi questo è il mio tour.

141
00:07:57,000 --> 00:07:59,570
‫E avremmo potuto chiamarlo anche prenotazioni, ma

142
00:07:59,570 --> 00:08:02,053
‫comunque non è molto importante.

143
00:08:03,210 --> 00:08:05,630
‫Quindi, ora siamo pronti per testarlo.

144
00:08:05,630 --> 00:08:07,990
‫Effettuiamo il logout da questo

145
00:08:07,990 --> 00:08:11,363
‫utente, quindi accediamo come l'altro nostro utente, Laura.

146
00:08:17,860 --> 00:08:22,380
‫Va bene, quindi vediamo cosa otteniamo qui e questo sta

147
00:08:24,111 --> 00:08:26,476
‫impiegando troppo tempo, quindi

148
00:08:26,476 --> 00:08:31,014
‫diamo un'occhiata al nostro codice, modifichiamo il nostro terminale qui.

149
00:08:31,014 --> 00:08:34,810
‫Ok, quindi non ci sono errori qui, ma sembra

150
00:08:34,810 --> 00:08:38,390
‫anche che qui non stia succedendo nulla.

151
00:08:38,390 --> 00:08:42,683
‫Quindi il percorso dei miei tour qui non compare nemmeno, d'accordo.

152
00:08:43,780 --> 00:08:45,550
‫Ora, per trovare questo bug,

153
00:08:45,550 --> 00:08:48,600
‫ho dovuto fare un po' di debug al di

154
00:08:48,600 --> 00:08:52,304
‫fuori di questo video perché era davvero difficile da trovare, ok.

155
00:08:52,304 --> 00:08:55,330
‫Innanzitutto, c'è un piccolo errore qui.

156
00:08:55,330 --> 00:08:58,690
‫Quindi questo qui dovrebbe effettivamente essere utente e non essere tour.

157
00:08:58,690 --> 00:09:00,800
‫Quindi l'ho spiegato correttamente allora,

158
00:09:00,800 --> 00:09:03,373
‫dove ho detto che dobbiamo filtrare per

159
00:09:03,373 --> 00:09:05,811
‫utente, quindi tour in cui l'utente

160
00:09:05,811 --> 00:09:08,250
‫è uguale all'utente proveniente dalla richiesta,

161
00:09:08,250 --> 00:09:11,690
‫ma poi per qualche motivo ho sbagliato qui, ok?

162
00:09:11,690 --> 00:09:13,904
‫Ma in realtà non è questo il bug principale.

163
00:09:13,904 --> 00:09:17,267
‫Quindi non quello che impedisce alla pagina di caricarsi effettivamente.

164
00:09:17,267 --> 00:09:19,552
‫L'errore che fa sì che ciò

165
00:09:19,552 --> 00:09:22,634
‫accada è proprio qui, in realtà, nel modello di prenotazione.

166
00:09:22,634 --> 00:09:26,810
‫Ed è quaggiù in questo middleware di pre-ricerca.

167
00:09:26,810 --> 00:09:28,690
‫E il problema

168
00:09:28,690 --> 00:09:32,944
‫è che non chiamiamo mai il prossimo middleware qui, giusto?

169
00:09:32,944 --> 00:09:36,120
‫Quindi, di nuovo, questo è un pre-middleware.

170
00:09:36,120 --> 00:09:38,490
‫E tutti i pre-middleware hanno accesso

171
00:09:38,490 --> 00:09:40,620
‫alla funzione successiva e quindi, alla

172
00:09:40,620 --> 00:09:42,710
‫fine di questi middleware, dobbiamo

173
00:09:42,710 --> 00:09:44,370
‫sempre chiamare next.

174
00:09:44,370 --> 00:09:48,634
‫Altrimenti, il nostro processo si blocca davvero, ok?

175
00:09:48,634 --> 00:09:52,110
‫Quindi dai un salvataggio, puoi effettivamente chiudere questo.

176
00:09:52,110 --> 00:09:54,800
‫E quindi ora proviamo di nuovo

177
00:09:56,754 --> 00:09:59,532
‫e ora abbiamo davvero i miei tour,

178
00:09:59,532 --> 00:10:04,097
‫ma è vuoto poiché questo utente non ha mai fatto una prenotazione.

179
00:10:04,097 --> 00:10:06,803
‫Quindi, proviamolo ora e prenotiamo

180
00:10:08,000 --> 00:10:10,203
‫l'escursionista nella foresta.

181
00:10:16,070 --> 00:10:18,480
‫Quindi dovrebbe funzionare ancora,

182
00:10:18,480 --> 00:10:21,291
‫e in effetti funziona, molto bene.

183
00:10:21,291 --> 00:10:24,400
‫Abbiamo l'indirizzo email preformattato e ora,

184
00:10:24,400 --> 00:10:26,763
‫come sempre, 4242.

185
00:10:28,590 --> 00:10:31,841
‫Quindi abbiamo fatto la prenotazione prima in realtà con questo

186
00:10:31,841 --> 00:10:34,710
‫utente, ma prima abbiamo implementato il modello di prenotazione

187
00:10:35,870 --> 00:10:37,681
‫e quindi non abbiamo mai

188
00:10:37,681 --> 00:10:39,893
‫veramente creato una prenotazione nel nostro sistema.

189
00:10:42,150 --> 00:10:44,590
‫Va bene, quindi

190
00:10:44,590 --> 00:10:49,590
‫pagamento accettato e ora vediamo e ci siamo, fantastico!

191
00:10:51,689 --> 00:10:55,200
‫Quindi quella logica che abbiamo appena implementato ha funzionato

192
00:10:55,200 --> 00:10:57,400
‫davvero e quindi l'unico

193
00:10:57,400 --> 00:11:00,020
‫problema era che mancava nel middleware.

194
00:11:00,020 --> 00:11:03,240
‫E proprio così, abbiamo completato un'altra pagina del

195
00:11:03,240 --> 00:11:05,470
‫nostro sito Web dinamico.

196
00:11:05,470 --> 00:11:09,230
‫E quindi, tutto ciò che resta da fare a questo

197
00:11:09,230 --> 00:11:11,513
‫punto è completare l'API delle prenotazioni.

