1
00:00:03,910 --> 00:00:09,095
É hora de começar a quarta e a última tarefa deste curso.

2
00:00:09,095 --> 00:00:12,170
Eu projetei esta tarefa para ser uma consolidação

3
00:00:12,170 --> 00:00:15,610
de tudo o que você aprendeu neste curso.

4
00:00:15,610 --> 00:00:21,990
Portanto, esta atribuição envolverá roteamento usando o roteador expresso.

5
00:00:21,990 --> 00:00:26,340
Ele vai envolver o design de esquemas no modelo,

6
00:00:26,340 --> 00:00:29,420
para o nosso MongoDB e Mongoose,

7
00:00:29,420 --> 00:00:33,531
e, em seguida, ele também vai olhar brevemente para a autenticação do usuário.

8
00:00:33,531 --> 00:00:36,420
O que exatamente fazemos nesta missão?

9
00:00:36,420 --> 00:00:41,600
Esta tarefa é baseada em torno da capacidade de um usuário

10
00:00:41,600 --> 00:00:49,510
salvar e recuperar uma lista de pratos como seus pratos favoritos no lado do servidor.

11
00:00:49,510 --> 00:00:53,105
Se você tivesse feito os cursos anteriores desta especialização,

12
00:00:53,105 --> 00:00:58,275
especificamente os cursos de desenvolvimento de aplicativos móveis híbridos,

13
00:00:58,275 --> 00:01:00,675
seja de script iônico ou nativo,

14
00:01:00,675 --> 00:01:06,720
você viu que nós projetamos os aplicativos para ter a capacidade de permitir que o usuário

15
00:01:06,720 --> 00:01:10,355
salve pratos na lista de seus favoritos pratos

16
00:01:10,355 --> 00:01:14,480
e também recuperar pratos dessa lista de seus pratos favoritos.

17
00:01:14,480 --> 00:01:17,840
Quando implementamos isso nos cursos anteriores,

18
00:01:17,840 --> 00:01:24,085
tínhamos implementado isso usando armazenamento local no dispositivo específico.

19
00:01:24,085 --> 00:01:26,330
Nesta tarefa, você estará estendendo

20
00:01:26,330 --> 00:01:30,308
o lado do servidor para ser capaz de suportar exatamente isso.

21
00:01:30,308 --> 00:01:34,940
Desta forma, o usuário pode salvar sua lista de pratos favoritos no

22
00:01:34,940 --> 00:01:37,805
lado do servidor e acessar esta lista a partir de

23
00:01:37,805 --> 00:01:41,950
qualquer dispositivo a partir do qual ele fará login em seu servidor.

24
00:01:41,950 --> 00:01:49,140
O que isso significa é que precisamos projetar uma nova rota para o nosso servidor,

25
00:01:49,140 --> 00:01:52,615
que vamos chamar como a rota /favorites.

26
00:01:52,615 --> 00:01:59,314
Nesta rota, teremos que projetar o roteador expresso para suportar as

27
00:01:59,314 --> 00:02:03,515
operações get, post e delete nesta rota e

28
00:02:03,515 --> 00:02:08,495
também projetar o esquema para armazenar os pratos favoritos

29
00:02:08,495 --> 00:02:13,343
e o modelo Mangusto correspondente e

30
00:02:13,343 --> 00:02:19,820
conectar os dois juntos para que as informações possam ser salvas e recuperado do MongoDB.

31
00:02:19,820 --> 00:02:27,590
Também usaremos a população de Mangusto para extrair as informações do modelo de

32
00:02:27,590 --> 00:02:32,000
usuário e do modelo de pratos quando

33
00:02:32,000 --> 00:02:37,105
juntarmos essa lista de pratos favoritos para o nosso usuário.

34
00:02:37,105 --> 00:02:41,355
As informações de pratos favoritos que você armazena não

35
00:02:41,355 --> 00:02:46,355
conterão realmente as informações do usuário ou as informações do prato.

36
00:02:46,355 --> 00:02:53,000
Em vez disso, ele vai conter ponteiros para os documentos para o documento prato e para

37
00:02:53,000 --> 00:02:56,660
o documento do usuário e, em seguida, vamos publicar esta informação

38
00:02:56,660 --> 00:03:03,155
quando estamos enviando de volta esta informação em resposta a um pedido get.

39
00:03:03,155 --> 00:03:05,495
Vejamos como implementamos

40
00:03:05,495 --> 00:03:13,135
esta tarefa final e também as várias tarefas nesta tarefa final.

41
00:03:13,135 --> 00:03:17,370
Para ajudá-lo a entender o que é necessário na

42
00:03:17,370 --> 00:03:21,330
tarefa final ou o que você estará implementando na tarefa final,

43
00:03:21,330 --> 00:03:26,835
deixe-me demonstrar o que seu servidor deve fazer no final desta tarefa

44
00:03:26,835 --> 00:03:31,540
e, em seguida, listarei as três tarefas que você precisa executar neste atribuição.

45
00:03:31,540 --> 00:03:35,460
Para começar, precisamos de um conjunto de pratos já no

46
00:03:35,460 --> 00:03:40,250
lado do servidor para que o usuário possa marcar alguns deles como seus pratos favoritos.

47
00:03:40,250 --> 00:03:47,805
Eu fui em frente e adicionou em quatro pratos à minha lista de pratos no lado do servidor.

48
00:03:47,805 --> 00:03:50,065
Você já sabe como fazer isso.

49
00:03:50,065 --> 00:03:52,725
Você tem que fazer login como administrador e, em seguida, postar

50
00:03:52,725 --> 00:03:56,670
esta informação prato para o lado do servidor, um por um.

51
00:03:56,670 --> 00:04:01,590
Para permitir que você obtenha as informações para cada um desses pratos,

52
00:04:01,590 --> 00:04:05,405
Eu já forneci o arquivo db.json que contém

53
00:04:05,405 --> 00:04:11,400
os documentos JSON correspondentes a cada um desses pratos nos recursos de atribuição.

54
00:04:11,400 --> 00:04:14,670
Você pode abrir isso, cortar e colar informações de lá e, em seguida,

55
00:04:14,670 --> 00:04:19,576
criar uma lista de pratos no lado do seu servidor.

56
00:04:19,576 --> 00:04:22,980
Aqui, você verá que eu já realizei a operação get no

57
00:04:22,980 --> 00:04:26,940
localhost:3000/pratos e então você

58
00:04:26,940 --> 00:04:31,140
vê que eu já obtive a lista de pratos aqui.

59
00:04:31,140 --> 00:04:38,570
O que é importante para nós notar é que cada prato terá seu próprio ID prato aqui.

60
00:04:38,570 --> 00:04:42,384
Quando você precisa marcar qualquer prato como seu favorito,

61
00:04:42,384 --> 00:04:46,470
você precisa acessar o ID do prato para cada um desses pratos.

62
00:04:46,470 --> 00:04:51,030
Você pode copiar estes quatro IDs prato e, em seguida, salvá-los para que quando você

63
00:04:51,030 --> 00:04:56,094
executar as operações para adicionar esses pratos à lista de pratos,

64
00:04:56,094 --> 00:05:00,085
então você será capaz de usar este ID prato.

65
00:05:00,085 --> 00:05:02,730
Então eu vou copiar esses quatro IDs prato e, em seguida,

66
00:05:02,730 --> 00:05:05,820
salvá-los em um documento de texto para que eu possa fazer uso deles.

67
00:05:05,820 --> 00:05:09,325
Antes de poder adicionar pratos à minha lista de pratos,

68
00:05:09,325 --> 00:05:12,347
obviamente preciso fazer login como usuário.

69
00:05:12,347 --> 00:05:16,370
Deixe-me ir em frente e fazer login como um dos usuários.

70
00:05:16,370 --> 00:05:25,245
Para fazer isso, deixe-me fazer uma postagem no localhost: 3000/usuários/login.

71
00:05:25,245 --> 00:05:28,530
E no corpo da mensagem,

72
00:05:28,530 --> 00:05:35,940
deixe-me digitar um dos usuários registrados.

73
00:05:35,940 --> 00:05:42,375
Não quero fazer login como administrador, mas como um dos outros usuários normais.

74
00:05:42,375 --> 00:05:47,442
Então deixe-me fazer este post para https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Agora, todas essas operações,

76
00:05:48,890 --> 00:05:55,200
isso é melhor para fazê-lo no endpoint HTTPS em vez do endpoint HTTP.

77
00:05:55,200 --> 00:06:01,920
Vamos fazer um post neste endpoint e fazer login em nosso serviço,

78
00:06:01,920 --> 00:06:05,920
e em resposta, você deve ser capaz de obter o token da web JSON.

79
00:06:05,920 --> 00:06:11,190
Então vamos fazer uma cópia deste token web JSON porque vamos precisar disso para

80
00:06:11,190 --> 00:06:16,905
executar qualquer uma das operações para adicionar pratos à nossa lista de favoritos.

81
00:06:16,905 --> 00:06:22,628
Deixe-me copiar este token e salvá-lo no meu documento de texto.

82
00:06:22,628 --> 00:06:27,935
Agora, como faço para adicionar um prato à minha lista de favoritos?

83
00:06:27,935 --> 00:06:33,450
Para fazer isso, o primeiro passo é que temos que

84
00:06:33,450 --> 00:06:40,355
acessar o endpoint /favorites.

85
00:06:40,355 --> 00:06:45,435
Se você quiser adicionar um prato específico à lista de favoritos,

86
00:06:45,435 --> 00:06:52,605
basta dizer /favoritos e, em seguida, adicionar o ID do prato na URL aqui.

87
00:06:52,605 --> 00:06:57,970
Deixe-me colar em um ID prato que eu quero adicionar à minha lista de favoritos.

88
00:06:57,970 --> 00:07:03,130
Aqui, eu colei na minha ID prato para a lista de favoritos.

89
00:07:03,130 --> 00:07:08,025
O corpo desta mensagem de host

90
00:07:08,025 --> 00:07:13,590
não conterá nada porque tudo o que eu preciso já está na URL.

91
00:07:13,590 --> 00:07:16,043
E para o cabeçalho,

92
00:07:16,043 --> 00:07:18,984
eu preciso configurar o cabeçalho de autorização,

93
00:07:18,984 --> 00:07:21,371
e no cabeçalho de autorização,

94
00:07:21,371 --> 00:07:24,380
eu preciso do token.

95
00:07:24,380 --> 00:07:29,487
Então deixe-me copiar o token aqui e, em seguida, no cabeçalho de autorização,

96
00:07:29,487 --> 00:07:34,750
digamos portador, e colar no cabeçalho de autorização.

97
00:07:34,750 --> 00:07:39,853
Você também pode fazer a mesma coisa para obter o token.

98
00:07:39,853 --> 00:07:46,925
Você também pode fazer o login através do Facebook e, em seguida, obter o token da web JSON.

99
00:07:46,925 --> 00:07:50,960
Ilustrei para obter o token da Web JSON usando

100
00:07:50,960 --> 00:07:55,655
a autenticação local padrão usando o nome de usuário e senha,

101
00:07:55,655 --> 00:07:58,940
mas não importa de que maneira você obteve o token da Web JSON.

102
00:07:58,940 --> 00:08:01,160
Desde que você tenha o token da Web JSON,

103
00:08:01,160 --> 00:08:04,376
você deve ser capaz de executar todas essas operações.

104
00:08:04,376 --> 00:08:10,280
Deixe-me executar a operação post neste endpoint e lembre-se que este

105
00:08:10,280 --> 00:08:16,570
é o ID do prato específico que eu quero adicionar à minha lista de favoritos.

106
00:08:16,570 --> 00:08:19,895
Quando eu postar na lista de favoritos,

107
00:08:19,895 --> 00:08:29,135
você verá que meu servidor responderá com este documento aqui no corpo da resposta.

108
00:08:29,135 --> 00:08:33,328
Agora, vamos examinar este documento para ver o que exatamente ele contém.

109
00:08:33,328 --> 00:08:36,680
Este documento, como você pode ver, contém um ID,

110
00:08:36,680 --> 00:08:39,511
mas obviamente porque este é um documento JSON,

111
00:08:39,511 --> 00:08:43,115
além disso ele contém um

112
00:08:43,115 --> 00:08:46,335
campo aqui chamado usuário.

113
00:08:46,335 --> 00:08:48,425
Agora, o que este campo de usuário armazena?

114
00:08:48,425 --> 00:08:53,848
Este campo de usuário é o ID do objeto do usuário

115
00:08:53,848 --> 00:09:00,620
correspondente a quem esta lista específica de favoritos é.

116
00:09:00,620 --> 00:09:02,960
E olhe para os pratos.

117
00:09:02,960 --> 00:09:10,120
Os pratos é uma matriz e é uma matriz de IDs prato.

118
00:09:10,120 --> 00:09:15,950
E neste caso, acabei de adicionar o primeiro prato à minha lista de favoritos.

119
00:09:15,950 --> 00:09:22,690
Então, é por isso que eu tenho apenas um prato na variedade de pratos na minha lista de favoritos.

120
00:09:22,690 --> 00:09:30,140
Então, isso deve sugerir imediatamente a você como projetar o esquema para seus favoritos.

121
00:09:30,140 --> 00:09:34,760
Então, pratos contém os IDs de objeto de cada um dos pratos,

122
00:09:34,760 --> 00:09:39,124
e o usuário contém o ID de objeto correspondente ao usuário.

123
00:09:39,124 --> 00:09:42,335
Você já viu como eu uso

124
00:09:42,335 --> 00:09:49,800
a informação para fazer população da informação quando eu faço uma operação get.

125
00:09:49,800 --> 00:09:52,690
Já o fizemos com comentários.

126
00:09:52,690 --> 00:09:57,980
Então, isso deve dar-lhe uma grande dica sobre como você iria projetar o esquema que contém

127
00:09:57,980 --> 00:10:04,855
o usuário ea variedade de pratos na minha lista de pratos aqui.

128
00:10:04,855 --> 00:10:07,330
Agora, nós fizemos o post sobre isso.

129
00:10:07,330 --> 00:10:09,500
Vamos pegar a lista de favoritos.

130
00:10:09,500 --> 00:10:11,750
Então, para obter a lista de favoritos,

131
00:10:11,750 --> 00:10:14,405
eu preciso executar uma operação get.

132
00:10:14,405 --> 00:10:16,561
Agora, para a operação get,

133
00:10:16,561 --> 00:10:21,950
eu obviamente preciso também ter as informações de autorização aqui porque

134
00:10:21,950 --> 00:10:27,635
você quer que um usuário seja capaz de recuperar apenas sua lista de favoritos,

135
00:10:27,635 --> 00:10:32,905
e nenhum outro usuário pode recuperar a lista de favoritos para um usuário diferente.

136
00:10:32,905 --> 00:10:34,590
Então, isso é muito importante.

137
00:10:34,590 --> 00:10:37,640
Então, isso sugere que você precisa

138
00:10:37,640 --> 00:10:41,620
verificar a autenticidade do usuário mesmo para a operação get.

139
00:10:41,620 --> 00:10:45,185
Agora, como a pós-operação

140
00:10:45,185 --> 00:10:49,760
obtém automaticamente esse ID de objeto correspondente ao usuário?

141
00:10:49,760 --> 00:10:55,175
Lembre-se de que quando você incluir o cabeçalho de autorização aqui,

142
00:10:55,175 --> 00:10:57,457
a partir do cabeçalho de autorização,

143
00:10:57,457 --> 00:11:01,055
pela forma como você executa a autorização do usuário,

144
00:11:01,055 --> 00:11:06,240
direcione essas propriedades de usuário já carregadas no objeto de solicitação.

145
00:11:06,240 --> 00:11:10,270
E então é aí que você terá acesso ao ID do objeto do usuário.

146
00:11:10,270 --> 00:11:13,914
Então, mais uma dica sobre como você irá preencher essa informação.

147
00:11:13,914 --> 00:11:16,655
Então, é por isso que notar que quando eu realizei o post,

148
00:11:16,655 --> 00:11:19,625
eu nunca especifiquei o usuário porque

149
00:11:19,625 --> 00:11:23,825
as informações do usuário devem ser automaticamente

150
00:11:23,825 --> 00:11:28,484
derivadas do que nós fornecemos aqui no cabeçalho de autorização.

151
00:11:28,484 --> 00:11:32,565
Então, mais uma dica sobre como você iria implementar isso.

152
00:11:32,565 --> 00:11:36,830
Então, é por isso que eu disse que esta tarefa é uma consolidação

153
00:11:36,830 --> 00:11:41,835
de todos os tópicos que você tem explorado neste curso.

154
00:11:41,835 --> 00:11:47,200
Agora, Eu não apoio uma operação get em um ID prato específico.

155
00:11:47,200 --> 00:11:50,610
Não faz sentido apoiar isso nos favoritos,

156
00:11:50,610 --> 00:11:53,345
em um ID de prato específico.

157
00:11:53,345 --> 00:11:58,595
Em vez disso, podemos executar uma operação get no host local 3443/favoritos.

158
00:11:58,595 --> 00:12:01,670
E então realizamos a operação “get”.

159
00:12:01,670 --> 00:12:09,398
Você deve notar imediatamente que o documento que é retornado a você contém

160
00:12:09,398 --> 00:12:17,715
as informações do usuário já preenchidas pela operação get aqui.

161
00:12:17,715 --> 00:12:18,950
Então, a informação do usuário.

162
00:12:18,950 --> 00:12:22,112
Então, em vez do ID do

163
00:12:22,112 --> 00:12:26,445
usuário lá, as informações do usuário já estão presentes lá.

164
00:12:26,445 --> 00:12:28,730
Isso é feito através da população de Mongo.

165
00:12:28,730 --> 00:12:34,435
Então, essa é outra grande dica sobre como você deve implementar a operação get.

166
00:12:34,435 --> 00:12:37,130
Não só as informações do usuário são preenchidas.

167
00:12:37,130 --> 00:12:39,626
Agora, por que eu gostaria que as informações do usuário fossem preenchidas?

168
00:12:39,626 --> 00:12:44,540
Porque isso pode ser útil quando estou exibindo informações.

169
00:12:44,540 --> 00:12:46,350
Isso pode não ser necessário,

170
00:12:46,350 --> 00:12:49,445
mas eu estou fazendo isso apenas por uma questão de completude

171
00:12:49,445 --> 00:12:53,825
porque se você está recuperando a lista de favoritos para um determinado usuário,

172
00:12:53,825 --> 00:12:56,120
você automaticamente sabe quem é o usuário,

173
00:12:56,120 --> 00:12:59,083
e esse usuário em particular está logando de qualquer maneira.

174
00:12:59,083 --> 00:13:01,385
Mas no caso de você querer as informações do usuário,

175
00:13:01,385 --> 00:13:06,278
você pode executar esta operação para obter informações desse usuário.

176
00:13:06,278 --> 00:13:10,720
Então, só para ilustrar que a população de Mongo pode ser usada,

177
00:13:10,720 --> 00:13:16,515
eu ilustrei não só que na lista de pratos aqui,

178
00:13:16,515 --> 00:13:22,820
a informação sobre cada prato já está preenchida nesta matriz.

179
00:13:22,820 --> 00:13:24,907
Então, se você tem um monte de pratos,

180
00:13:24,907 --> 00:13:30,385
a informação de cada um desses pratos deve ser preenchida nesta matriz.

181
00:13:30,385 --> 00:13:34,670
Então, este é outro uso da população de Mongo

182
00:13:34,670 --> 00:13:38,555
que você está vendo para preencher as informações de pratos.

183
00:13:38,555 --> 00:13:44,014
Apenas pela forma como você configurar o esquema para seus favoritos,

184
00:13:44,014 --> 00:13:47,840
isso deve ser automaticamente possível para você usando

185
00:13:47,840 --> 00:13:52,010
apenas o ponto preencher na lista de pratos aqui.

186
00:13:52,010 --> 00:13:54,103
Então, essa é a segunda parte.

187
00:13:54,103 --> 00:13:59,213
Agora que somos capazes de recuperar o método get pratos,

188
00:13:59,213 --> 00:14:03,590
deixe-me mostrar-lhe como você pode executar uma pós-operação onde você pode

189
00:14:03,590 --> 00:14:08,750
adicionar um monte de pratos em sua lista de favoritos.

190
00:14:08,750 --> 00:14:11,145
Agora, voltando a este post,

191
00:14:11,145 --> 00:14:18,145
se você precisa adicionar não apenas um, mas um conjunto de pratos à sua lista de favoritos,

192
00:14:18,145 --> 00:14:19,850
agora por que você iria querer isso?

193
00:14:19,850 --> 00:14:24,980
Talvez do lado do cliente você possa ter um botão que, quando

194
00:14:24,980 --> 00:14:31,255
clicado, permitirá que você marque um conjunto de pratos da lista de pratos

195
00:14:31,255 --> 00:14:34,710
e, em seguida, adicioná-los em um tiro em sua lista de favoritos.

196
00:14:34,710 --> 00:14:37,390
Então, para apoiar esse tipo de operação,

197
00:14:37,390 --> 00:14:42,295
você pode querer permitir que uma postagem seja realizada nos favoritos da barra aqui.

198
00:14:42,295 --> 00:14:45,641
Agora, quando a postagem for executada nos favoritos de barra, novamente,

199
00:14:45,641 --> 00:14:48,959
você ainda precisará do cabeçalho de autorização.

200
00:14:48,959 --> 00:14:51,460
Mas no corpo da mensagem,

201
00:14:51,460 --> 00:14:57,493
vamos armazenar a lista de pratos como uma matriz deste formato.

202
00:14:57,493 --> 00:15:01,490
Então, este é um documento JSON aqui,

203
00:15:01,490 --> 00:15:04,340
então deixe-me ter certeza de que no meu cabeçalho,

204
00:15:04,340 --> 00:15:08,107
o tipo de conteúdo já está presente lá.

205
00:15:08,107 --> 00:15:14,545
Agora, este documento

206
00:15:14,545 --> 00:15:18,735
conterá uma variedade de pratos como este.

207
00:15:18,735 --> 00:15:22,700
Então, cada prato será identificado

208
00:15:22,700 --> 00:15:29,860
dizendo sublinhado ID cólon,

209
00:15:29,860 --> 00:15:34,835
e então aqui eles terão o ID prato,

210
00:15:34,835 --> 00:15:39,760
e então isso não seria nada além de uma variedade de pratos.

211
00:15:39,760 --> 00:15:46,630
Então, deixe-me adicionar dois pratos à minha lista de favoritos aqui apenas para ilustrar o ponto.

212
00:15:46,630 --> 00:15:51,726
Então, deixe-me colar as identificações de um par de pratos para isso.

213
00:15:51,726 --> 00:15:56,823
Então, quando você executa uma postagem no host local 3443/favoritos,

214
00:15:56,823 --> 00:16:02,295
é assim que você compor o corpo da mensagem de postagem aqui.

215
00:16:02,295 --> 00:16:07,497
Então, cada prato que você deseja adicionar será incluído neste formato aqui.

216
00:16:07,497 --> 00:16:09,670
Agora, quando você incluí-los neste formato

217
00:16:09,670 --> 00:16:12,425
e, em seguida, postar no lado do servidor,

218
00:16:12,425 --> 00:16:20,161
o servidor em troca enviará de volta a lista atualizada de favoritos para você.

219
00:16:20,161 --> 00:16:23,395
Então, quando você receber a lista atualizada de favoritos do lado do servidor,

220
00:16:23,395 --> 00:16:26,300
você verá que as informações do usuário já estão lá,

221
00:16:26,300 --> 00:16:34,685
mas observe como os pratos favoritos são armazenados nesta matriz de IDs de objetos de prato.

222
00:16:34,685 --> 00:16:38,320
Então, o primeiro que já tínhamos adicionado na operação anterior.

223
00:16:38,320 --> 00:16:39,485
Então, os dois restantes,

224
00:16:39,485 --> 00:16:43,990
acabamos de adicionar à lista de nossos favoritos.

225
00:16:43,990 --> 00:16:47,545
Então, esses dois IDs de objetos também são adicionados à

226
00:16:47,545 --> 00:16:53,110
minha matriz de pratos no meu documento favoritos aqui.

227
00:16:53,110 --> 00:16:56,050
Então, lá vai você. Então, é assim que você deve executar

228
00:16:56,050 --> 00:17:02,763
a postagem de favoritos no endpoint como este.

229
00:17:02,763 --> 00:17:05,340
Agora, vamos novamente executar uma operação get nos

230
00:17:05,340 --> 00:17:10,160
favoritos apenas para ver o que os recursos de operação get para nós.

231
00:17:10,160 --> 00:17:12,600
Então, quando realizamos a operação GET,

232
00:17:12,600 --> 00:17:21,345
você notará imediatamente que no documento de retorno favoritos,

233
00:17:21,345 --> 00:17:23,640
você tem as informações do usuário lá,

234
00:17:23,640 --> 00:17:25,065
e então abaixo aqui,

235
00:17:25,065 --> 00:17:29,820
os pratos não são nada além de uma série de documentos Json aqui,

236
00:17:29,820 --> 00:17:32,670
cada um correspondente a um prato.

237
00:17:32,670 --> 00:17:35,010
Agora isso é automaticamente cuidado pelo

238
00:17:35,010 --> 00:17:38,360
povoado mangusto que temos feito no lado do servidor.

239
00:17:38,360 --> 00:17:44,525
Portanto, todas essas informações devem ser preenchidas automaticamente no lado do servidor.

240
00:17:44,525 --> 00:17:50,430
Então é assim que suas operações de postagem nos dois endpoints funcionam.

241
00:17:50,430 --> 00:17:56,395
Agora deixe-me mostrar como você executaria uma operação DELETE.

242
00:17:56,395 --> 00:18:00,735
Agora, para excluir um prato específico.

243
00:18:00,735 --> 00:18:08,193
Então deixe-me executar uma operação de exclusão em um endpoint específico.

244
00:18:08,193 --> 00:18:13,095
Então vamos voltar para este ponto final,

245
00:18:13,095 --> 00:18:16,470
e então deixe-me apenas copiar um desses,

246
00:18:16,470 --> 00:18:18,985
e então eu vou excluir um dos pratos.

247
00:18:18,985 --> 00:18:22,585
Então, para executar a operação de exclusão em um dos pratos,

248
00:18:22,585 --> 00:18:23,750
é claro que como você vê,

249
00:18:23,750 --> 00:18:26,453
nós não precisamos do corpo ainda,

250
00:18:26,453 --> 00:18:29,485
e nós não precisamos do conteúdo aqui.

251
00:18:29,485 --> 00:18:35,580
Tudo o que precisamos fazer é executar uma operação de exclusão neste endpoint.

252
00:18:35,580 --> 00:18:43,125
Então aqui você vê que eu estou fazendo localhost: 3443/favorites/ e, em seguida, o ID do prato.

253
00:18:43,125 --> 00:18:46,231
E então deixe-me postar isso.

254
00:18:46,231 --> 00:18:51,760
Então, quando eu excluo um prato específico da minha lista de favoritos,

255
00:18:51,760 --> 00:18:53,695
você percebe imediatamente que

256
00:18:53,695 --> 00:19:01,555
minha lista atualizada de favoritos é enviada de volta para o lado do cliente pelo servidor.

257
00:19:01,555 --> 00:19:03,010
Então você tem o usuário aqui,

258
00:19:03,010 --> 00:19:06,220
mas note que na matriz de pratos eu só tenho dois pratos agora.

259
00:19:06,220 --> 00:19:11,105
O que acabei de apagar desapareceu dessa lista de pratos.

260
00:19:11,105 --> 00:19:12,820
Então, se você executar um GET agora,

261
00:19:12,820 --> 00:19:18,265
sua matriz de pratos vai continuamente para pratos lá dentro.

262
00:19:18,265 --> 00:19:24,635
Agora, suponha que eu execute um DELETE nos favoritos aqui.

263
00:19:24,635 --> 00:19:30,565
Então, se eu executar DELETE no ponto final favoritos em si diretamente,

264
00:19:30,565 --> 00:19:34,540
então o que ele vai fazer é excluir todos os meus favoritos e

265
00:19:34,540 --> 00:19:39,096
também excluir meu documento favoritos completamente do lado do servidor.

266
00:19:39,096 --> 00:19:42,250
Então deixe-me executar essa operação de exclusão no lado do servidor,

267
00:19:42,250 --> 00:19:47,000
e então ele irá retornar o fato de que ele excluiu este documento em particular,

268
00:19:47,000 --> 00:19:49,675
então ele apenas retorna este documento de qualquer maneira.

269
00:19:49,675 --> 00:19:54,670
Mas agora se eu executar uma operação GET na minha lista de favoritos,

270
00:19:54,670 --> 00:19:57,580
eu vou recuperar um nulo lá.

271
00:19:57,580 --> 00:20:00,880
O que significa que não tenho este documento no lado do servidor.

272
00:20:00,880 --> 00:20:03,800
Assim, o documento favoritos é completamente ido,

273
00:20:03,800 --> 00:20:09,352
quando eu executar operação DELETE na coluna host local três de favoritos anteriormente barra.

274
00:20:09,352 --> 00:20:12,805
Agora, novamente, quando eu adicionar um novo prato à

275
00:20:12,805 --> 00:20:16,580
minha lista de favoritos, meu documento favorito será configurado novamente.

276
00:20:16,580 --> 00:20:21,880
Isso é perfeitamente bom para nós operarmos.

277
00:20:21,880 --> 00:20:26,440
Então, com esta demonstração, eu mostrei

278
00:20:26,440 --> 00:20:32,680
todas as várias operações que você precisa para executar no lado do seu servidor.

279
00:20:32,680 --> 00:20:36,670
Todas as várias operações nos vários pontos de extremidade de rota

280
00:20:36,670 --> 00:20:40,754
que você precisa executar ou implementar no lado do servidor.

281
00:20:40,754 --> 00:20:42,265
Agora que você viu

282
00:20:42,265 --> 00:20:47,720
todas as várias operações que o lado do servidor deve suportar nos favoritos barra,

283
00:20:47,720 --> 00:20:48,895
e os favoritos

284
00:20:48,895 --> 00:20:50,995
barra, endpoints de identificação de prato barra,

285
00:20:50,995 --> 00:20:56,033
deixe-me listar as três tarefas que você precisa concluir nesta atribuição.

286
00:20:56,033 --> 00:21:03,340
A primeira tarefa, é claro, é implementar o esquema favorito e modelo.

287
00:21:03,340 --> 00:21:09,995
Isso você implementará na pasta models em um arquivo chamado NodeJS favorito.

288
00:21:09,995 --> 00:21:12,460
Lá você implementará o esquema favorito.

289
00:21:12,460 --> 00:21:13,952
Lembre-se de que o esquema favorito armazenará

290
00:21:13,952 --> 00:21:19,720
a referência ao ID do objeto de documento do usuário

291
00:21:19,720 --> 00:21:26,212
e uma matriz de IDs de objeto de documento de pratos.

292
00:21:26,212 --> 00:21:29,440
Essa é a grande dica sobre como você deve

293
00:21:29,440 --> 00:21:33,355
projetar o esquema e o modelo para seus favoritos.

294
00:21:33,355 --> 00:21:39,190
A segunda tarefa em sua atribuição é implementar as

295
00:21:39,190 --> 00:21:46,555
operações GET, POST e DELETE no ponto final de favoritos de barra.

296
00:21:46,555 --> 00:21:49,245
GET lhe dará toda a lista de favoritos,

297
00:21:49,245 --> 00:21:52,225
preenchida automaticamente pelo povoado de Mongo,

298
00:21:52,225 --> 00:21:58,360
o POST deve conter uma lista de pratos conforme especificado

299
00:21:58,360 --> 00:22:04,425
no formato que acabei de demonstrar a você no corpo da mensagem POST.

300
00:22:04,425 --> 00:22:08,695
E assim um monte de pratos será adicionado em sua lista de favoritos,

301
00:22:08,695 --> 00:22:11,800
e operação DELETE no ponto de extremidade favoritos barra irá

302
00:22:11,800 --> 00:22:16,215
excluir seu documento favoritos completamente do lado do servidor.

303
00:22:16,215 --> 00:22:22,225
Agora, se você executar uma operação POST na barra favorito ID prato barra, em

304
00:22:22,225 --> 00:22:27,405
seguida, o prato particular será adicionado em sua lista de favoritos.

305
00:22:27,405 --> 00:22:29,635
Se o seu documento favorito não existir,

306
00:22:29,635 --> 00:22:32,455
obviamente você precisa criar esse documento favorito.

307
00:22:32,455 --> 00:22:36,250
Então, isso também faz parte dessa operação POST.

308
00:22:36,250 --> 00:22:39,760
Então, se em algum momento você achar que o documento favorito não existe,

309
00:22:39,760 --> 00:22:41,770
você precisa primeiro criar o documento favorito e

310
00:22:41,770 --> 00:22:44,550
depois adicionar este prato no documento favorito.

311
00:22:44,550 --> 00:22:47,155
Este é, portanto, um ponto importante a observar.

312
00:22:47,155 --> 00:22:51,305
Quando você executa um POST no ponto de extremidade de favoritos de barra,

313
00:22:51,305 --> 00:22:53,290
se o documento favorito não existir,

314
00:22:53,290 --> 00:22:58,150
você precisará criar um documento favorito e, em seguida, adicionar os pratos ao seu documento favorito.

315
00:22:58,150 --> 00:22:59,410
Se ele já existir,

316
00:22:59,410 --> 00:23:02,765
você só atualiza esse documento favorito.

317
00:23:02,765 --> 00:23:08,480
Então esta é mais uma dica sobre como você deve implementar as operações POST.

318
00:23:08,480 --> 00:23:13,735
Se você executar uma operação DELETE na barra favoritos ID prato barra,

319
00:23:13,735 --> 00:23:18,640
em seguida, esse prato específico será excluído da lista de favoritos.

320
00:23:18,640 --> 00:23:23,125
Agora, ao executar o POST e as operações DELETE,

321
00:23:23,125 --> 00:23:28,110
você deve garantir que você não irá adicionar duplicatas ao ID do prato.

322
00:23:28,110 --> 00:23:33,165
Portanto, antes de adicionar um ID de objeto de prato à lista de pratos,

323
00:23:33,165 --> 00:23:39,490
verifique sempre se o ID do prato já existe na lista de pratos.

324
00:23:39,490 --> 00:23:45,430
Agora é aqui que você pode usar o método indexOf matriz para verificar

325
00:23:45,430 --> 00:23:52,395
se um ID de documento já existe em uma matriz de documentos.

326
00:23:52,395 --> 00:23:56,725
Então essa é outra grande dica sobre como você vai implementar essa parte.

327
00:23:56,725 --> 00:23:59,610
E a terceira tarefa, é claro, é montar

328
00:23:59,610 --> 00:24:05,725
o roteador favorito nos endpoints favoritos de barra atualizando o arquivo app.js.

329
00:24:05,725 --> 00:24:08,490
O roteador favorito em si será implementado

330
00:24:08,490 --> 00:24:13,710
na pasta rotas no arquivo favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Então, com isso eu descrevi o que você

332
00:24:17,010 --> 00:24:21,010
deveria implementar na quarta e última missão.

333
00:24:21,010 --> 00:24:24,015
E espero que esta atribuição irá ajudá-lo

334
00:24:24,015 --> 00:24:27,930
a consolidar tudo o que você aprendeu no curso,

335
00:24:27,930 --> 00:24:32,685
desde a concepção de roteador expresso,

336
00:24:32,685 --> 00:24:40,720
até fazer o esquema e modelos MongoDB e também Mongo,

337
00:24:40,720 --> 00:24:45,095
e também executar a autenticação de usuário apropriada.

338
00:24:45,095 --> 00:24:47,685
E como mencionei novamente,

339
00:24:47,685 --> 00:24:52,965
apenas um usuário autenticado terá acesso à sua lista de favoritos.

340
00:24:52,965 --> 00:24:55,920
Mesmo a operação GET só pode ser executada por

341
00:24:55,920 --> 00:25:00,750
um usuário autenticado no ponto de extremidade de favoritos de barra.

342
00:25:00,750 --> 00:25:05,640
E você só buscaria os favoritos para esse usuário em particular.

343
00:25:05,640 --> 00:25:12,000
Não é possível permitir que um usuário diferente acesse os favoritos de outro usuário.

344
00:25:12,000 --> 00:25:15,840
Então, novamente, isso também informa como você deve executar

345
00:25:15,840 --> 00:25:20,890
a autenticação nos diferentes pontos de extremidade de rota.

346
00:25:20,890 --> 00:25:27,595
Com isso, concluo a descrição das tarefas na quarta tarefa.

347
00:25:27,595 --> 00:25:31,790
Divirta-se completando esta tarefa.