1
00:00:03,910 --> 00:00:09,095
È il momento di iniziare il quarto e l'assegnazione finale di questo corso.

2
00:00:09,095 --> 00:00:12,170
Ho progettato questo incarico per essere un consolidamento

3
00:00:12,170 --> 00:00:15,610
di tutto ciò che hai imparato in questo corso.

4
00:00:15,610 --> 00:00:21,990
Quindi questa assegnazione comporterà il routing utilizzando il router espresso.

5
00:00:21,990 --> 00:00:26,340
Implicherà la progettazione di schemi nel modello,

6
00:00:26,340 --> 00:00:29,420
per i nostri MongoDB e Mongoose,

7
00:00:29,420 --> 00:00:33,531
e poi guarderà brevemente all'autenticazione dell'utente.

8
00:00:33,531 --> 00:00:36,420
Cosa facciamo esattamente in questo incarico?

9
00:00:36,420 --> 00:00:41,600
Questa assegnazione si basa sulla possibilità per un utente

10
00:00:41,600 --> 00:00:49,510
di salvare e recuperare un elenco di piatti come piatti preferiti sul lato server.

11
00:00:49,510 --> 00:00:53,105
Se avessi seguito i corsi precedenti di questa specializzazione, in

12
00:00:53,105 --> 00:00:58,275
particolare i corsi di sviluppo di app mobili ibridi, che

13
00:00:58,275 --> 00:01:00,675
si tratti di script ionico o nativo,

14
00:01:00,675 --> 00:01:06,720
hai visto che abbiamo progettato le app per avere la capacità di

15
00:01:06,720 --> 00:01:10,355
consentire all'utente di salvare piatti nella lista dei loro preferiti piatti

16
00:01:10,355 --> 00:01:14,480
e anche recuperare i piatti da quella lista dei loro piatti preferiti.

17
00:01:14,480 --> 00:01:17,840
Quando abbiamo implementato che nei corsi precedenti,

18
00:01:17,840 --> 00:01:24,085
avevamo implementato che utilizzando lo storage locale sul dispositivo specifico.

19
00:01:24,085 --> 00:01:26,330
In questo compito, estenderai

20
00:01:26,330 --> 00:01:30,308
il lato server per essere in grado di supportare esattamente questo.

21
00:01:30,308 --> 00:01:34,940
In questo modo, l'utente può salvare il proprio elenco di piatti preferiti

22
00:01:34,940 --> 00:01:37,805
sul lato server e accedere a questo elenco da

23
00:01:37,805 --> 00:01:41,950
qualsiasi dispositivo da cui accederanno al proprio server.

24
00:01:41,950 --> 00:01:49,140
Ciò significa che abbiamo bisogno di progettare un nuovo percorso per il nostro server,

25
00:01:49,140 --> 00:01:52,615
che chiameremo come il/favorites route.

26
00:01:52,615 --> 00:01:59,314
Su questo percorso, dovremo progettare il router espresso per supportare le

27
00:01:59,314 --> 00:02:03,515
operazioni get, post ed delete su questo percorso e

28
00:02:03,515 --> 00:02:08,495
anche progettare lo schema per memorizzare i piatti preferiti

29
00:02:08,495 --> 00:02:13,343
e il modello Mangusta corrispondente e

30
00:02:13,343 --> 00:02:19,820
collegare i due insieme in modo che le informazioni possano essere salvate e recuperato da MongoDB.

31
00:02:19,820 --> 00:02:27,590
Useremo anche la popolazione Mangusta al fine di trarre le informazioni dal

32
00:02:27,590 --> 00:02:32,000
modello utente e dal modello di piatti quando mettiamo

33
00:02:32,000 --> 00:02:37,105
insieme quell'elenco di piatti preferiti per il nostro utente.

34
00:02:37,105 --> 00:02:41,355
Le informazioni sui piatti preferiti che memorizzi

35
00:02:41,355 --> 00:02:46,355
in realtà non conterranno né le informazioni dell'utente né le informazioni del piatto.

36
00:02:46,355 --> 00:02:53,000
Invece, esso conterrà puntatori ai documenti per il documento piatto e per

37
00:02:53,000 --> 00:02:56,660
il documento utente e poi pubblicheremo queste informazioni

38
00:02:56,660 --> 00:03:03,155
quando stiamo inviando indietro queste informazioni in risposta a una richiesta get.

39
00:03:03,155 --> 00:03:05,495
Diamo un'occhiata a come implementiamo

40
00:03:05,495 --> 00:03:13,135
questo compito finale e anche le varie attività in questo compito finale.

41
00:03:13,135 --> 00:03:17,370
Per aiutarti a capire cosa è richiesto

42
00:03:17,370 --> 00:03:21,330
nell'assegnazione finale o cosa implementerai nell'assegnazione finale,

43
00:03:21,330 --> 00:03:26,835
fammi dimostrare cosa dovrebbe fare il tuo server alla fine di questa assegnazione,

44
00:03:26,835 --> 00:03:31,540
e quindi elencherò le tre attività che devi eseguire in questo assegnazione.

45
00:03:31,540 --> 00:03:35,460
Per iniziare, abbiamo bisogno di una serie di piatti già sul

46
00:03:35,460 --> 00:03:40,250
lato server in modo che l'utente possa contrassegnare alcuni di loro come i loro piatti preferiti.

47
00:03:40,250 --> 00:03:47,805
Sono andato avanti e ho aggiunto in quattro piatti alla mia lista di piatti sul lato server.

48
00:03:47,805 --> 00:03:50,065
Sai già come farlo.

49
00:03:50,065 --> 00:03:52,725
Devi accedere come amministratore e poi pubblicare

50
00:03:52,725 --> 00:03:56,670
queste informazioni piatto sul lato server uno per uno.

51
00:03:56,670 --> 00:04:01,590
Per consentire di ottenere le informazioni per ciascuno di questi piatti,

52
00:04:01,590 --> 00:04:05,405
ti ho già fornito il file db.json che contiene

53
00:04:05,405 --> 00:04:11,400
i documenti JSON corrispondenti a ciascuno di questi piatti nelle risorse di assegnazione.

54
00:04:11,400 --> 00:04:14,670
È possibile aprire, tagliare e incollare le informazioni da lì e quindi

55
00:04:14,670 --> 00:04:19,576
creare un elenco di piatti sul lato server.

56
00:04:19,576 --> 00:04:22,980
Qui, vedrai che ho già eseguito l'operazione get sul

57
00:04:22,980 --> 00:04:26,940
localhost: 3000/piatti e poi

58
00:04:26,940 --> 00:04:31,140
vedrai che ho già ottenuto l'elenco dei piatti qui.

59
00:04:31,140 --> 00:04:38,570
Ciò che è importante per noi notare è che ogni piatto avrà il proprio ID piatto qui.

60
00:04:38,570 --> 00:04:42,384
Quando è necessario contrassegnare qualsiasi piatto come preferito,

61
00:04:42,384 --> 00:04:46,470
è necessario accedere all'ID piatto per ciascuno di questi piatti.

62
00:04:46,470 --> 00:04:51,030
È possibile copiare questi quattro ID piatti e poi salvarli in modo che quando si

63
00:04:51,030 --> 00:04:56,094
eseguono le operazioni per aggiungere questi piatti all'elenco dei piatti,

64
00:04:56,094 --> 00:05:00,085
allora si sarà in grado di utilizzare questo ID piatto.

65
00:05:00,085 --> 00:05:02,730
Quindi ho intenzione di copiare questi quattro ID piatto e poi

66
00:05:02,730 --> 00:05:05,820
salvarli in un documento di testo in modo che io possa farne uso.

67
00:05:05,820 --> 00:05:09,325
Prima di poter aggiungere piatti alla mia lista di piatti,

68
00:05:09,325 --> 00:05:12,347
ovviamente ho bisogno di accedere come utente.

69
00:05:12,347 --> 00:05:16,370
Lasciatemi andare avanti e accedere come uno degli utenti.

70
00:05:16,370 --> 00:05:25,245
Per fare ciò, lasciami fare un post sul localhost: 3000/utenti/login.

71
00:05:25,245 --> 00:05:28,530
E nel corpo del messaggio,

72
00:05:28,530 --> 00:05:35,940
lasciami digitare uno degli utenti registrati.

73
00:05:35,940 --> 00:05:42,375
Non voglio accedere come amministratore ma come uno degli altri utenti normali.

74
00:05:42,375 --> 00:05:47,442
Quindi lasciami fare questo post su https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Ora tutte queste operazioni,

76
00:05:48,890 --> 00:05:55,200
questo è meglio farlo sull'endpoint HTTPS piuttosto che sull'endpoint HTTP.

77
00:05:55,200 --> 00:06:01,920
Faremo un post a questo endpoint e accederemo al nostro servizio

78
00:06:01,920 --> 00:06:05,920
e, in risposta, dovresti essere in grado di entrare in possesso del token web JSON.

79
00:06:05,920 --> 00:06:11,190
Quindi facciamo una copia di questo token web JSON perché avremo bisogno di questo per

80
00:06:11,190 --> 00:06:16,905
eseguire una qualsiasi delle operazioni per aggiungere piatti al nostro elenco di preferiti.

81
00:06:16,905 --> 00:06:22,628
Permettetemi di copiare questo token e salvarlo nel mio documento di testo.

82
00:06:22,628 --> 00:06:27,935
Ora, come posso aggiungere un piatto alla mia lista di preferiti?

83
00:06:27,935 --> 00:06:33,450
Per fare ciò, il primo passo è che dobbiamo

84
00:06:33,450 --> 00:06:40,355
accedere all'endpoint /favorites.

85
00:06:40,355 --> 00:06:45,435
Se vuoi aggiungere un piatto specifico all'elenco dei preferiti,

86
00:06:45,435 --> 00:06:52,605
diciamo semplicemente /favorites e poi aggiungiamo l'ID del piatto nell'URL qui.

87
00:06:52,605 --> 00:06:57,970
Lasciami incollare in un ID piatto che voglio aggiungere alla mia lista di preferiti.

88
00:06:57,970 --> 00:07:03,130
Qui, ho incollato nel mio ID piatto alla lista dei preferiti.

89
00:07:03,130 --> 00:07:08,025
Il corpo di questo messaggio host

90
00:07:08,025 --> 00:07:13,590
non conterrà nulla perché tutto ciò di cui ho bisogno è già nell'URL.

91
00:07:13,590 --> 00:07:16,043
E per l'intestazione,

92
00:07:16,043 --> 00:07:18,984
ho bisogno di impostare l'intestazione di autorizzazione,

93
00:07:18,984 --> 00:07:21,371
e nell'intestazione di autorizzazione,

94
00:07:21,371 --> 00:07:24,380
ho bisogno del token.

95
00:07:24,380 --> 00:07:29,487
Quindi lasciami copiare il token qui e poi nell'intestazione di autorizzazione,

96
00:07:29,487 --> 00:07:34,750
diciamo portatore e incolla nell'intestazione di autorizzazione.

97
00:07:34,750 --> 00:07:39,853
Puoi anche fare la stessa cosa per ottenere il token.

98
00:07:39,853 --> 00:07:46,925
Puoi anche eseguire il login tramite Facebook e quindi ottenere il token web JSON.

99
00:07:46,925 --> 00:07:50,960
Ho illustrato di ottenere il token web JSON utilizzando

100
00:07:50,960 --> 00:07:55,655
l'autenticazione locale standard utilizzando il nome utente e la password,

101
00:07:55,655 --> 00:07:58,940
ma non importa in che modo hai ottenuto il token web JSON.

102
00:07:58,940 --> 00:08:01,160
Finché si dispone del token web JSON,

103
00:08:01,160 --> 00:08:04,376
si dovrebbe essere in grado di eseguire tutte queste operazioni.

104
00:08:04,376 --> 00:08:10,280
Permettetemi di eseguire l'operazione post su questo endpoint e ricordare che questo

105
00:08:10,280 --> 00:08:16,570
è l'ID piatto per il piatto specifico che voglio aggiungere alla mia lista di preferiti.

106
00:08:16,570 --> 00:08:19,895
Quando pubblico l'elenco dei preferiti,

107
00:08:19,895 --> 00:08:29,135
vedrai che il mio server risponderà con questo documento qui nel corpo della risposta.

108
00:08:29,135 --> 00:08:33,328
Ora, esaminiamo questo documento per vedere cosa contiene esattamente.

109
00:08:33,328 --> 00:08:36,680
Questo documento, come puoi vedere, contiene un ID,

110
00:08:36,680 --> 00:08:39,511
ma ovviamente perché questo è un documento JSON,

111
00:08:39,511 --> 00:08:43,115
inoltre contiene un

112
00:08:43,115 --> 00:08:46,335
campo qui chiamato utente.

113
00:08:46,335 --> 00:08:48,425
Ora cosa memorizza questo campo utente?

114
00:08:48,425 --> 00:08:53,848
Questo campo utente è l'ID oggetto dell'utente

115
00:08:53,848 --> 00:09:00,620
corrispondente al quale si trova questo particolare elenco di preferiti.

116
00:09:00,620 --> 00:09:02,960
E guarda i piatti.

117
00:09:02,960 --> 00:09:10,120
I piatti sono una matrice ed è una serie di ID piatto.

118
00:09:10,120 --> 00:09:15,950
E in questo caso, ho appena aggiunto il primo piatto alla mia lista di preferiti.

119
00:09:15,950 --> 00:09:22,690
Quindi, è per questo che ho solo un piatto nella gamma di piatti nella mia lista di preferiti.

120
00:09:22,690 --> 00:09:30,140
Quindi, questo dovrebbe suggerirti immediatamente come progettare lo schema per i tuoi preferiti.

121
00:09:30,140 --> 00:09:34,760
Quindi, piatti contiene gli ID oggetto di ciascuno dei piatti

122
00:09:34,760 --> 00:09:39,124
e l'utente contiene l'ID oggetto corrispondente all'utente.

123
00:09:39,124 --> 00:09:42,335
Avete già visto come uso

124
00:09:42,335 --> 00:09:49,800
le informazioni per fare popolazione delle informazioni quando faccio un'operazione get.

125
00:09:49,800 --> 00:09:52,690
Lo abbiamo già fatto con commenti.

126
00:09:52,690 --> 00:09:57,980
Quindi, questo dovrebbe darti un grande suggerimento su come progettare lo schema che contiene

127
00:09:57,980 --> 00:10:04,855
l'utente e l'array di piatti nella mia lista di piatti qui.

128
00:10:04,855 --> 00:10:07,330
Ora, abbiamo fatto il post su questo.

129
00:10:07,330 --> 00:10:09,500
Otteniamo la lista dei preferiti.

130
00:10:09,500 --> 00:10:11,750
Quindi, per ottenere l'elenco dei preferiti,

131
00:10:11,750 --> 00:10:14,405
ho bisogno di eseguire un'operazione get.

132
00:10:14,405 --> 00:10:16,561
Ora, per l'operazione get,

133
00:10:16,561 --> 00:10:21,950
ovviamente ho bisogno di avere anche le informazioni di autorizzazione qui perché

134
00:10:21,950 --> 00:10:27,635
vuoi che un utente sia in grado di recuperare solo il loro elenco di preferiti

135
00:10:27,635 --> 00:10:32,905
e nessun altro utente può recuperare l'elenco dei preferiti per un utente diverso.

136
00:10:32,905 --> 00:10:34,590
Quindi, questo è molto importante.

137
00:10:34,590 --> 00:10:37,640
Quindi, questo ti suggerisce che è necessario

138
00:10:37,640 --> 00:10:41,620
verificare l'autenticità dell'utente anche per l'operazione get.

139
00:10:41,620 --> 00:10:45,185
Ora, in che modo la post-operazione

140
00:10:45,185 --> 00:10:49,760
ottiene automaticamente questo ID oggetto corrispondente all'utente?

141
00:10:49,760 --> 00:10:55,175
Ricorda che quando includi l'intestazione di autorizzazione qui,

142
00:10:55,175 --> 00:10:57,457
dall'intestazione di autorizzazione,

143
00:10:57,457 --> 00:11:01,055
dal modo in cui esegui l'autorizzazione dell'utente,

144
00:11:01,055 --> 00:11:06,240
indirizza le proprietà utente già caricate sull'oggetto richiesta.

145
00:11:06,240 --> 00:11:10,270
E così è lì che si otterrà l'accesso all'ID oggetto dell'utente.

146
00:11:10,270 --> 00:11:13,914
Quindi, un altro suggerimento su come riempirai queste informazioni.

147
00:11:13,914 --> 00:11:16,655
Quindi, questo è il motivo per cui notare che quando ho eseguito il post,

148
00:11:16,655 --> 00:11:19,625
non ho mai specificato l'utente perché

149
00:11:19,625 --> 00:11:23,825
le informazioni dell'utente dovrebbero essere automaticamente

150
00:11:23,825 --> 00:11:28,484
derivate da ciò che abbiamo fornito qui nell'intestazione di autorizzazione.

151
00:11:28,484 --> 00:11:32,565
Quindi, un altro suggerimento su come andresti a implementare questo.

152
00:11:32,565 --> 00:11:36,830
Quindi, è per questo che ho detto che questo incarico è un consolidamento

153
00:11:36,830 --> 00:11:41,835
di tutti gli argomenti che avete esplorato in questo corso.

154
00:11:41,835 --> 00:11:47,200
Ora, non sostengo un'operazione get su un ID piatto specifico.

155
00:11:47,200 --> 00:11:50,610
Non ha senso sostenerlo sui preferiti,

156
00:11:50,610 --> 00:11:53,345
in un ID piatto specifico.

157
00:11:53,345 --> 00:11:58,595
Invece, siamo in grado di eseguire un'operazione get su host locale 3443/preferiti.

158
00:11:58,595 --> 00:12:01,670
E poi eseguiamo l'operazione get.

159
00:12:01,670 --> 00:12:09,398
Si noterà immediatamente che il documento restituito contiene

160
00:12:09,398 --> 00:12:17,715
le informazioni dell'utente già popolate dall'operazione get qui.

161
00:12:17,715 --> 00:12:18,950
Quindi, le informazioni dell'utente.

162
00:12:18,950 --> 00:12:22,112
Quindi, invece dell'ID utente lì,

163
00:12:22,112 --> 00:12:26,445
le informazioni dell'utente sono già presenti in lì.

164
00:12:26,445 --> 00:12:28,730
Questo viene fatto attraverso la popolazione di Mongo.

165
00:12:28,730 --> 00:12:34,435
Quindi, questo è un altro grande suggerimento su come dovresti implementare l'operazione get.

166
00:12:34,435 --> 00:12:37,130
Non solo le informazioni dell'utente sono compilate.

167
00:12:37,130 --> 00:12:39,626
Ora perché dovrei volere che le informazioni dell'utente siano compilate?

168
00:12:39,626 --> 00:12:44,540
Perché potrebbe essere utile quando visualizzo informazioni.

169
00:12:44,540 --> 00:12:46,350
Questo potrebbe non essere necessario,

170
00:12:46,350 --> 00:12:49,445
ma lo sto facendo solo per motivi di completezza

171
00:12:49,445 --> 00:12:53,825
perché se stai recuperando l'elenco dei preferiti per un particolare utente,

172
00:12:53,825 --> 00:12:56,120
sai automaticamente chi è l'utente

173
00:12:56,120 --> 00:12:59,083
e quel particolare utente sta accedendo comunque.

174
00:12:59,083 --> 00:13:01,385
Ma nel caso in cui si desidera che le informazioni dell'utente, è

175
00:13:01,385 --> 00:13:06,278
possibile eseguire questa operazione per entrare in possesso delle informazioni dell'utente.

176
00:13:06,278 --> 00:13:10,720
Quindi, solo per illustrarvi che la popolazione di Mongo può essere utilizzata,

177
00:13:10,720 --> 00:13:16,515
ho illustrato non solo che nella lista dei piatti qui,

178
00:13:16,515 --> 00:13:22,820
le informazioni su ogni piatto sono già popolate in questa matrice.

179
00:13:22,820 --> 00:13:24,907
Quindi, se hai un sacco di piatti,

180
00:13:24,907 --> 00:13:30,385
le informazioni di ciascuno di questi piatti dovrebbero essere popolate in questa matrice.

181
00:13:30,385 --> 00:13:34,670
Quindi, questo è un altro uso della popolazione di Mongo

182
00:13:34,670 --> 00:13:38,555
che si sta vedendo per riempire le informazioni sui piatti.

183
00:13:38,555 --> 00:13:44,014
Proprio dal modo in cui imposti lo schema per i tuoi preferiti,

184
00:13:44,014 --> 00:13:47,840
questo dovrebbe essere automaticamente possibile per te usando

185
00:13:47,840 --> 00:13:52,010
solo il punto popolare nell'elenco dei piatti qui.

186
00:13:52,010 --> 00:13:54,103
Quindi, questa è la seconda parte.

187
00:13:54,103 --> 00:13:59,213
Ora che siamo in grado di recuperare il metodo get dish,

188
00:13:59,213 --> 00:14:03,590
lascia che ti mostri come puoi eseguire un'operazione post in cui puoi

189
00:14:03,590 --> 00:14:08,750
aggiungere un sacco di piatti nella tua lista di preferiti.

190
00:14:08,750 --> 00:14:11,145
Ora, tornando a questo post,

191
00:14:11,145 --> 00:14:18,145
se hai bisogno di aggiungere non solo uno ma un set di piatti alla tua lista di preferiti,

192
00:14:18,145 --> 00:14:19,850
ora perché vorresti questo?

193
00:14:19,850 --> 00:14:24,980
Forse dal lato del cliente potresti avere un pulsante che, quando

194
00:14:24,980 --> 00:14:31,255
cliccato, ti permetterà di selezionare un set di piatti dall'elenco dei piatti,

195
00:14:31,255 --> 00:14:34,710
e quindi aggiungerli in un colpo solo nella tua lista dei preferiti.

196
00:14:34,710 --> 00:14:37,390
Quindi, per supportare questo tipo di operazione,

197
00:14:37,390 --> 00:14:42,295
potresti voler consentire che un post venga eseguito sui preferiti della barra qui.

198
00:14:42,295 --> 00:14:45,641
Ora, quando il post viene eseguito sui preferiti della barra, di nuovo,

199
00:14:45,641 --> 00:14:48,959
avrai ancora bisogno dell'intestazione di autorizzazione.

200
00:14:48,959 --> 00:14:51,460
Ma nel corpo del messaggio,

201
00:14:51,460 --> 00:14:57,493
stiamo andando a memorizzare l'elenco dei piatti come una matrice di questo formato.

202
00:14:57,493 --> 00:15:01,490
Quindi, questo è un documento JSON qui,

203
00:15:01,490 --> 00:15:04,340
quindi lasciami fare in modo che nella mia intestazione,

204
00:15:04,340 --> 00:15:08,107
il tipo di contenuto sia già presente lì.

205
00:15:08,107 --> 00:15:14,545
Ora, questo documento

206
00:15:14,545 --> 00:15:18,735
conterrà una serie di piatti come questo.

207
00:15:18,735 --> 00:15:22,700
Quindi, ogni piatto sarà identificato

208
00:15:22,700 --> 00:15:29,860
dicendo punti di sottolineatura ID,

209
00:15:29,860 --> 00:15:34,835
e poi qui avranno l'ID piatto,

210
00:15:34,835 --> 00:15:39,760
e quindi questo non sarebbe altro che una serie di piatti.

211
00:15:39,760 --> 00:15:46,630
Quindi, lasciatemi aggiungere due piatti alla mia lista di preferiti qui solo per illustrare il punto.

212
00:15:46,630 --> 00:15:51,726
Quindi, lasciami incollare gli ID di un paio di piatti in questo.

213
00:15:51,726 --> 00:15:56,823
Quindi, quando si esegue un post sull'host locale 3443/preferiti,

214
00:15:56,823 --> 00:16:02,295
questo è il modo in cui si compone il corpo del messaggio post qui.

215
00:16:02,295 --> 00:16:07,497
Quindi, ogni piatto che vuoi aggiungere sarà incluso in questo formato qui.

216
00:16:07,497 --> 00:16:09,670
Ora, quando li includi in questo formato,

217
00:16:09,670 --> 00:16:12,425
e poi pubblichi su quel lato server,

218
00:16:12,425 --> 00:16:20,161
il server in cambio invierà indietro l'elenco aggiornato dei preferiti per te.

219
00:16:20,161 --> 00:16:23,395
Quindi, quando si riceve l'elenco aggiornato dei preferiti dal lato server,

220
00:16:23,395 --> 00:16:26,300
si vedrà che le informazioni dell'utente sono già lì,

221
00:16:26,300 --> 00:16:34,685
ma si noti come i piatti preferiti sono memorizzati in questa matrice di ID oggetto piatto.

222
00:16:34,685 --> 00:16:38,320
Quindi, il primo che avevamo già aggiunto nell'operazione precedente.

223
00:16:38,320 --> 00:16:39,485
Così i restanti due,

224
00:16:39,485 --> 00:16:43,990
abbiamo appena aggiunto alla lista dei nostri preferiti.

225
00:16:43,990 --> 00:16:47,545
Quindi, questi due ID oggetto vengono aggiunti anche nel

226
00:16:47,545 --> 00:16:53,110
mio array di piatti nel mio documento preferito qui.

227
00:16:53,110 --> 00:16:56,050
Allora, ecco a te. Quindi, questo è il modo in cui dovresti eseguire

228
00:16:56,050 --> 00:17:02,763
il post dei preferiti sull'endpoint in questo modo.

229
00:17:02,763 --> 00:17:05,340
Ora, cerchiamo di nuovo eseguire un'operazione get

230
00:17:05,340 --> 00:17:10,160
sui preferiti solo per vedere ciò che le caratteristiche di operazione get per noi.

231
00:17:10,160 --> 00:17:12,600
Quindi, quando eseguiamo l'operazione GET,

232
00:17:12,600 --> 00:17:21,345
noterai immediatamente che nel documento dei preferiti di ritorno,

233
00:17:21,345 --> 00:17:23,640
hai le informazioni dell'utente lì,

234
00:17:23,640 --> 00:17:25,065
e poi giù qui sotto,

235
00:17:25,065 --> 00:17:29,820
i piatti non sono altro che una serie di documenti Json qui,

236
00:17:29,820 --> 00:17:32,670
ognuno corrispondente a un piatto.

237
00:17:32,670 --> 00:17:35,010
Ora questo viene automaticamente curato dalla mangusta

238
00:17:35,010 --> 00:17:38,360
popolata che abbiamo fatto sul lato server.

239
00:17:38,360 --> 00:17:44,525
Quindi tutte queste informazioni dovrebbero essere popolate automaticamente sul lato server.

240
00:17:44,525 --> 00:17:50,430
Quindi è così che funzionano le operazioni di post sui due endpoint.

241
00:17:50,430 --> 00:17:56,395
Ora lascia che ti mostri come eseguiresti un'operazione DELETE.

242
00:17:56,395 --> 00:18:00,735
Ora per cancellare un piatto specifico.

243
00:18:00,735 --> 00:18:08,193
Quindi lasciami eseguire un'operazione di eliminazione su un endpoint specifico.

244
00:18:08,193 --> 00:18:13,095
Quindi torneremo a questo endpoint,

245
00:18:13,095 --> 00:18:16,470
e poi lasciatemi copiare uno di questi,

246
00:18:16,470 --> 00:18:18,985
e poi cancellerò uno dei piatti.

247
00:18:18,985 --> 00:18:22,585
Quindi, per eseguire l'operazione di eliminazione su uno

248
00:18:22,585 --> 00:18:23,750
dei piatti, ovviamente, come vedi,

249
00:18:23,750 --> 00:18:26,453
non abbiamo ancora bisogno del corpo,

250
00:18:26,453 --> 00:18:29,485
e non abbiamo bisogno del contenuto qui.

251
00:18:29,485 --> 00:18:35,580
Tutto quello che dobbiamo fare è eseguire un'operazione di eliminazione su questo endpoint.

252
00:18:35,580 --> 00:18:43,125
Quindi qui vedi che sto facendo localhost: 3443/favoriti/ e poi l'ID del piatto.

253
00:18:43,125 --> 00:18:46,231
E poi lasciami postare questo.

254
00:18:46,231 --> 00:18:51,760
Quindi, quando elimino un piatto specifico dal mio elenco di preferiti,

255
00:18:51,760 --> 00:18:53,695
noti immediatamente che

256
00:18:53,695 --> 00:19:01,555
il mio elenco aggiornato dei preferiti viene inviato al lato client dal server.

257
00:19:01,555 --> 00:19:03,010
Quindi hai l'utente qui,

258
00:19:03,010 --> 00:19:06,220
ma nota che nell'array di piatti ho solo due piatti ora.

259
00:19:06,220 --> 00:19:11,105
Quello che ho appena cancellato è sparito da quella lista di piatti.

260
00:19:11,105 --> 00:19:12,820
Quindi, se esegui un GET ora,

261
00:19:12,820 --> 00:19:18,265
il tuo array di piatti continuerà a piatti lì dentro.

262
00:19:18,265 --> 00:19:24,635
Ora, supponiamo di eseguire un DELETE sui preferiti qui.

263
00:19:24,635 --> 00:19:30,565
Quindi, se eseguo DELETE direttamente sull'endpoint preferito,

264
00:19:30,565 --> 00:19:34,540
allora quello che sta per fare è eliminare tutti i miei preferiti e

265
00:19:34,540 --> 00:19:39,096
anche eliminare completamente il mio documento preferito dal lato server.

266
00:19:39,096 --> 00:19:42,250
Quindi lasciami eseguire quell'operazione di eliminazione sul lato server,

267
00:19:42,250 --> 00:19:47,000
e quindi restituirà il fatto che ha eliminato questo particolare documento,

268
00:19:47,000 --> 00:19:49,675
quindi restituisce comunque questo documento.

269
00:19:49,675 --> 00:19:54,670
Ma ora se eseguo un'operazione GET sul mio elenco di preferiti,

270
00:19:54,670 --> 00:19:57,580
recupererò un null lì.

271
00:19:57,580 --> 00:20:00,880
Significato che non ho questo documento sul lato server.

272
00:20:00,880 --> 00:20:03,800
Quindi il documento dei preferiti è completamente sparito,

273
00:20:03,800 --> 00:20:09,352
quando eseguo l'operazione DELETE sulla colonna host locale tre dai preferiti precedentemente slash.

274
00:20:09,352 --> 00:20:12,805
Ora di nuovo, quando aggiungo un nuovo piatto alla

275
00:20:12,805 --> 00:20:16,580
mia lista di preferiti, il mio documento preferito verrà nuovamente impostato.

276
00:20:16,580 --> 00:20:21,880
Va benissimo per noi operare.

277
00:20:21,880 --> 00:20:26,440
Quindi con questa dimostrazione ti ho mostrato

278
00:20:26,440 --> 00:20:32,680
tutte le varie operazioni che devi eseguire sul lato server.

279
00:20:32,680 --> 00:20:36,670
Tutte le varie operazioni sui vari endpoint di route

280
00:20:36,670 --> 00:20:40,754
che è necessario eseguire o implementare sul lato server.

281
00:20:40,754 --> 00:20:42,265
Ora che hai visto

282
00:20:42,265 --> 00:20:47,720
tutte le varie operazioni che il lato server dovrebbe supportare sui preferiti della barra

283
00:20:47,720 --> 00:20:48,895
e i preferiti della

284
00:20:48,895 --> 00:20:50,995
barra, gli endpoint dell'ID del piatto della barra,

285
00:20:50,995 --> 00:20:56,033
fammi elencare le tre attività che devi completare in questo compito.

286
00:20:56,033 --> 00:21:03,340
Il primo compito, ovviamente, è quello di implementare lo schema e il modello preferiti.

287
00:21:03,340 --> 00:21:09,995
Questo implementerai nella cartella dei modelli in un file chiamato NodeJS preferito.

288
00:21:09,995 --> 00:21:12,460
Lì implementerai lo schema preferito.

289
00:21:12,460 --> 00:21:13,952
Ricordare che lo schema preferito memorizzerà

290
00:21:13,952 --> 00:21:19,720
il riferimento all'ID oggetto documento dell'utente

291
00:21:19,720 --> 00:21:26,212
e una matrice di piatti ID oggetto documento.

292
00:21:26,212 --> 00:21:29,440
Questo è il grande suggerimento su come dovresti

293
00:21:29,440 --> 00:21:33,355
progettare lo schema e il modello per i tuoi preferiti.

294
00:21:33,355 --> 00:21:39,190
La seconda attività dell'assegnazione consiste nell'implementare le

295
00:21:39,190 --> 00:21:46,555
operazioni GET, POST e DELETE sull'endpoint dei preferiti della barra.

296
00:21:46,555 --> 00:21:49,245
GET ti porterà tutta la lista dei preferiti,

297
00:21:49,245 --> 00:21:52,225
popolata automaticamente dal popolamento di Mongo,

298
00:21:52,225 --> 00:21:58,360
il POST dovrebbe contenere un elenco di piatti come specificato

299
00:21:58,360 --> 00:22:04,425
nel formato che ti ho appena dimostrato nel corpo del messaggio POST.

300
00:22:04,425 --> 00:22:08,695
E così un sacco di piatti verrà aggiunto nel tuo elenco di preferiti,

301
00:22:08,695 --> 00:22:11,800
e l'operazione DELETE sull'endpoint dei preferiti barra

302
00:22:11,800 --> 00:22:16,215
eliminerà completamente il documento preferito dal lato server.

303
00:22:16,215 --> 00:22:22,225
Ora, se esegui un'operazione POST sull'ID piatto barra preferita,

304
00:22:22,225 --> 00:22:27,405
allora il piatto particolare verrà aggiunto al tuo elenco di preferiti.

305
00:22:27,405 --> 00:22:29,635
Se il tuo documento preferito non esiste,

306
00:22:29,635 --> 00:22:32,455
ovviamente devi creare quel documento preferito.

307
00:22:32,455 --> 00:22:36,250
Quindi questo è anche parte di quell'operazione POST.

308
00:22:36,250 --> 00:22:39,760
Quindi, se in qualsiasi momento si scopre che il documento preferito non esiste,

309
00:22:39,760 --> 00:22:41,770
è necessario prima creare il documento preferito e

310
00:22:41,770 --> 00:22:44,550
quindi aggiungere questo piatto nel documento preferito.

311
00:22:44,550 --> 00:22:47,155
Quindi questo è un punto importante anche da notare.

312
00:22:47,155 --> 00:22:51,305
Quando si esegue un POST sull'endpoint dei preferiti della barra,

313
00:22:51,305 --> 00:22:53,290
se il documento preferito non esiste,

314
00:22:53,290 --> 00:22:58,150
è necessario creare un documento preferito e quindi aggiungere i piatti al documento preferito.

315
00:22:58,150 --> 00:22:59,410
Se esiste già,

316
00:22:59,410 --> 00:23:02,765
aggiorni solo quel documento preferito.

317
00:23:02,765 --> 00:23:08,480
Quindi questo è un altro suggerimento su come dovresti implementare le operazioni POST.

318
00:23:08,480 --> 00:23:13,735
Se si esegue un'operazione DELETE sull'ID della barra dei preferiti della barra,

319
00:23:13,735 --> 00:23:18,640
il piatto specifico verrà eliminato dall'elenco dei preferiti.

320
00:23:18,640 --> 00:23:23,125
Ora nell'esecuzione delle operazioni POST e DELETE,

321
00:23:23,125 --> 00:23:28,110
dovresti assicurarti di non aggiungere duplicati all'ID del piatto.

322
00:23:28,110 --> 00:23:33,165
Quindi, prima di aggiungere un ID oggetto piatto all'elenco dei piatti,

323
00:23:33,165 --> 00:23:39,490
controlla sempre se l'ID del piatto esiste già nell'elenco dei piatti.

324
00:23:39,490 --> 00:23:45,430
Ora questo è dove è possibile utilizzare il metodo array indexOf per verificare

325
00:23:45,430 --> 00:23:52,395
se un ID documento esiste già in una matrice di documenti.

326
00:23:52,395 --> 00:23:56,725
Quindi questo è un altro grande suggerimento su come implementerai quella parte.

327
00:23:56,725 --> 00:23:59,610
E il terzo compito, naturalmente, è quello di montare

328
00:23:59,610 --> 00:24:05,725
il router preferito sugli endpoint preferiti barra aggiornando il file app.js.

329
00:24:05,725 --> 00:24:08,490
Il router preferito stesso sarà implementato

330
00:24:08,490 --> 00:24:13,710
nella cartella route nel file favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Quindi con questo ho descritto cosa

332
00:24:17,010 --> 00:24:21,010
dovresti implementare nel quarto e ultimo incarico.

333
00:24:21,010 --> 00:24:24,015
E spero che questo incarico ti aiuti

334
00:24:24,015 --> 00:24:27,930
a consolidare tutto ciò che hai imparato nel corso,

335
00:24:27,930 --> 00:24:32,685
dalla progettazione di router express,

336
00:24:32,685 --> 00:24:40,720
al fare MongoDB e anche allo schema e ai modelli di Mongo,

337
00:24:40,720 --> 00:24:45,095
e anche all'esecuzione dell'autenticazione utente appropriata.

338
00:24:45,095 --> 00:24:47,685
E come ho già detto,

339
00:24:47,685 --> 00:24:52,965
solo un utente autenticato avrà accesso al suo elenco di preferiti.

340
00:24:52,965 --> 00:24:55,920
Anche l'operazione GET può essere eseguita solo da

341
00:24:55,920 --> 00:25:00,750
un utente autenticato sull'endpoint dei preferiti della barra.

342
00:25:00,750 --> 00:25:05,640
E dovresti solo recuperare i preferiti per quel particolare utente.

343
00:25:05,640 --> 00:25:12,000
Non è possibile consentire a un utente diverso di accedere ai preferiti di un altro utente.

344
00:25:12,000 --> 00:25:15,840
Quindi, ancora una volta, questo ti dice anche come dovresti eseguire

345
00:25:15,840 --> 00:25:20,890
l'autenticazione sui diversi endpoint del percorso.

346
00:25:20,890 --> 00:25:27,595
Con questo completo la descrizione delle attività nel quarto incarico.

347
00:25:27,595 --> 00:25:31,790
Divertiti a completare questo incarico.