﻿1
00:00:01,010 --> 00:00:03,970
‫Instrutor: Tudo bem, e agora só para terminar esta

2
00:00:03,970 --> 00:00:07,183
‫parte, vamos criar algumas fábricas para a obtenção de documentos.

3
00:00:08,740 --> 00:00:11,963
‫E vamos começar com getOne aqui, ok?

4
00:00:12,910 --> 00:00:17,910
‫Exportações. getOne, mas este é um pouco

5
00:00:18,580 --> 00:00:20,690
‫mais complicado, porque temos um

6
00:00:20,690 --> 00:00:22,710
‫populate no manipulador getTour.

7
00:00:22,710 --> 00:00:24,803
‫Então, vamos dar uma olhada nisso.

8
00:00:25,900 --> 00:00:30,090
‫Então, bem aqui, neste, temos esse populate aqui, que é

9
00:00:30,090 --> 00:00:32,570
‫diferente de todos os outros

10
00:00:32,570 --> 00:00:35,220
‫get handlers nos outros recursos, certo?

11
00:00:35,220 --> 00:00:37,620
‫Mas, bem, isso não

12
00:00:37,620 --> 00:00:40,670
‫é realmente um problema porque simplesmente nos

13
00:00:40,670 --> 00:00:45,670
‫permitiremos passar um objeto de opções populadas para nossa função getOne, certo?

14
00:00:48,030 --> 00:00:50,840
‫Então, em vez de simplesmente

15
00:00:50,840 --> 00:00:55,700
‫passar o modelo, também teremos opções de populate, certo.

16
00:00:57,890 --> 00:01:00,370
‫E então, a partir daqui, retornaremos a

17
00:01:00,370 --> 00:01:02,053
‫função de tratamento normal.

18
00:01:03,360 --> 00:01:06,563
‫Então, vamos copiar tudo isso novamente, tudo

19
00:01:10,850 --> 00:01:11,683
‫bem.

20
00:01:13,730 --> 00:01:15,330
‫Portanto, não precisamos deste aqui.

21
00:01:17,690 --> 00:01:19,743
‫Então aqui, como sempre,

22
00:01:23,140 --> 00:01:25,800
‫é modelo, e aqui está doc.

23
00:01:25,800 --> 00:01:27,993
‫Bem, na verdade aqui, documento,

24
00:01:30,520 --> 00:01:33,850
‫e aqui, mais uma vez, dados iguais a doc.

25
00:01:33,850 --> 00:01:36,210
‫Agora, também precisamos fazer algumas alterações

26
00:01:36,210 --> 00:01:38,390
‫aqui por causa deste popular,

27
00:01:38,390 --> 00:01:41,610
‫então basicamente, vamos primeiro criar a consulta e,

28
00:01:41,610 --> 00:01:44,950
‫em seguida, se houver o objeto de opções de

29
00:01:44,950 --> 00:01:46,550
‫preenchimento, iremos adicioná-lo

30
00:01:46,550 --> 00:01:50,810
‫à consulta e, em seguida, por final aguarde essa consulta, ok?

31
00:01:50,810 --> 00:01:51,643
‫Faz sentido?

32
00:01:53,390 --> 00:01:55,890
‫Então, vamos traduzir o que acabei de dizer.

33
00:01:55,890 --> 00:02:00,773
‫Portanto, a consulta é simplesmente igual a Model. findById, assim,

34
00:02:02,770 --> 00:02:04,993
‫certo?

35
00:02:06,630 --> 00:02:10,980
‫Então, se houver um objeto de opções de

36
00:02:10,980 --> 00:02:12,193
‫preenchimento,

37
00:02:13,420 --> 00:02:15,020
‫bem, nesse caso,

38
00:02:15,020 --> 00:02:20,020
‫a consulta será uma consulta. preencher com as opções de preencher, certo?

39
00:02:24,410 --> 00:02:27,370
‫E então, finalmente aguardamos nossa consulta, e a

40
00:02:27,370 --> 00:02:28,853
‫salvamos no documento.

41
00:02:30,010 --> 00:02:35,010
‫Então, aguarde a consulta assim, tudo bem.

42
00:02:36,210 --> 00:02:38,660
‫E assim, é realmente isso.

43
00:02:38,660 --> 00:02:40,360
‫Então, essa lógica que

44
00:02:40,360 --> 00:02:43,200
‫temos aqui de não esperar a consulta logo

45
00:02:43,200 --> 00:02:45,300
‫de cara, mas sim salvá-la em

46
00:02:45,300 --> 00:02:48,220
‫uma variável, para que possamos, no próximo passo, manipulá-la.

47
00:02:48,220 --> 00:02:50,770
‫Na verdade, já fizemos esse tipo de

48
00:02:50,770 --> 00:02:54,020
‫coisa antes, quando estávamos construindo nossos recursos de API, certo?

49
00:02:54,020 --> 00:02:57,210
‫Então, só no final, quando toda a consulta estiver

50
00:02:57,210 --> 00:03:00,563
‫pronta, vamos aguardar e armazenar em algum lugar de uma variável.

51
00:03:02,260 --> 00:03:06,600
‫Agora, vamos seguir em frente e realmente usar este em todos os lugares,

52
00:03:06,600 --> 00:03:08,803
‫começando, é claro, com o Tour.

53
00:03:10,470 --> 00:03:12,170
‫Portanto, getTour agora será

54
00:03:13,670 --> 00:03:15,473
‫de fábrica. getOne

55
00:03:18,260 --> 00:03:20,900
‫e passar o objeto

56
00:03:20,900 --> 00:03:24,440
‫Tour and popular options, lembra disso?

57
00:03:24,440 --> 00:03:29,440
‫E então, o que vamos fazer é dizer caminho e avaliações.

58
00:03:31,590 --> 00:03:35,540
‫Certo, então lembre-se de que a propriedade path

59
00:03:35,540 --> 00:03:37,720
‫é basicamente o

60
00:03:37,720 --> 00:03:40,950
‫campo que queremos preencher, e então também

61
00:03:40,950 --> 00:03:43,750
‫podemos especificar select, então lembre-se deste,

62
00:03:43,750 --> 00:03:47,770
‫onde especificamos qual dos campos realmente queremos obter, certo?

63
00:03:47,770 --> 00:03:48,603
‫Mas, neste

64
00:03:48,603 --> 00:03:50,050
‫caso, não temos nada

65
00:03:50,050 --> 00:03:51,900
‫disso, então vamos deixar assim.

66
00:03:53,180 --> 00:03:57,723
‫E agora, podemos ir em frente e excluir tudo isso.

67
00:03:58,910 --> 00:04:00,570
‫Tão bom.

68
00:04:00,570 --> 00:04:03,473
‫E, só para ter certeza, vamos testar isso rapidamente.

69
00:04:06,200 --> 00:04:07,963
‫Então, vamos fazer um certo Tour

70
00:04:10,880 --> 00:04:12,630
‫e, de fato, ainda funciona.

71
00:04:12,630 --> 00:04:15,503
‫Vamos ver se este teve alguns comentários.

72
00:04:16,630 --> 00:04:19,210
‫Ah, sim, na verdade é, e

73
00:04:19,210 --> 00:04:22,993
‫você vê que o processo de população também ainda está funcionando.

74
00:04:24,920 --> 00:04:28,177
‫Então, foi um sucesso, eu diria.

75
00:04:28,177 --> 00:04:30,870
‫E então, agora vamos usar este getOne em

76
00:04:30,870 --> 00:04:32,710
‫todos os outros recursos.

77
00:04:32,710 --> 00:04:36,833
‫Então, o controlador de usuário aqui onde temos, vamos ver

78
00:04:38,200 --> 00:04:40,603
‫onde está, ah, aqui embaixo.

79
00:04:43,760 --> 00:04:47,047
‫Então, digamos fábrica. getOne, mas apenas

80
00:04:48,930 --> 00:04:52,290
‫com o modelo do usuário, e nenhum objeto

81
00:04:52,290 --> 00:04:54,343
‫de opções de preenchimento.

82
00:04:56,900 --> 00:04:58,740
‫Ok, e já que estamos

83
00:04:58,740 --> 00:05:02,030
‫aqui, vamos apenas alterar a mensagem de erro aqui

84
00:05:02,030 --> 00:05:03,850
‫para criar usuário,

85
00:05:03,850 --> 00:05:07,583
‫para que esta rota não seja definida, nunca será, e

86
00:05:08,980 --> 00:05:11,703
‫por favor use inscrição em seu lugar.

87
00:05:17,010 --> 00:05:19,110
‫Em seguida, e

88
00:05:19,110 --> 00:05:23,410
‫finalmente, basicamente a mesma coisa para as resenhas.

89
00:05:23,410 --> 00:05:25,063
‫Então, exportações. getReview é

90
00:05:29,018 --> 00:05:31,427
‫igual de fábrica. getOne review,

91
00:05:35,450 --> 00:05:40,193
‫e acho que ainda não temos (resmunga) nossas rotas.

92
00:05:41,360 --> 00:05:46,357
‫E, de fato, não fazemos isso, adicionando isso bem rápido

93
00:05:46,357 --> 00:05:49,107
‫aqui, reviewController. getReview, ok?

94
00:05:54,300 --> 00:05:56,423
‫Vamos testar este também rapidamente,

95
00:05:58,870 --> 00:06:01,300
‫só porque também quero adicioná-lo aqui

96
00:06:01,300 --> 00:06:03,203
‫ao Postman, certo?

97
00:06:04,950 --> 00:06:08,453
‫Então, apenas copiando este porque é semelhante, e então, de

98
00:06:10,560 --> 00:06:12,393
‫fato, ele é obtido.

99
00:06:15,300 --> 00:06:20,300
‫E, sim, funciona perfeitamente bem, armazene-o aqui em comentários

100
00:06:23,730 --> 00:06:24,987
‫e obtenhaReview.

101
00:06:28,258 --> 00:06:30,560
‫Tudo bem, agora tudo o

102
00:06:30,560 --> 00:06:35,560
‫que está faltando é basicamente uma função getAll de fábrica, certo?

103
00:06:36,070 --> 00:06:37,320
‫Então, basicamente,

104
00:06:39,200 --> 00:06:42,380
‫para substituir getAllTours, getAllUsers, que também devemos

105
00:06:42,380 --> 00:06:46,003
‫ter em algum lugar aqui, getAllUsers e também

106
00:06:46,970 --> 00:06:50,530
‫getAllReviews, então vamos copiá-lo novamente aqui do controlador

107
00:06:50,530 --> 00:06:53,540
‫de tour porque na verdade este

108
00:06:53,540 --> 00:06:56,380
‫é o que está realmente completo

109
00:06:56,380 --> 00:06:59,920
‫porque tem tudo esses recursos da API e,

110
00:06:59,920 --> 00:07:03,390
‫portanto, depois de criar nossa função getAll factory,

111
00:07:03,390 --> 00:07:07,083
‫todos os três recursos obterão esses recursos da API.

112
00:07:09,299 --> 00:07:12,840
‫Então, novamente, copiando tudo isso, as

113
00:07:15,230 --> 00:07:17,433
‫exportações. getAll,

114
00:07:24,630 --> 00:07:28,390
‫e agora, teremos que exigir esses recursos

115
00:07:28,390 --> 00:07:29,743
‫da API

116
00:07:31,690 --> 00:07:35,780
‫aqui e, na verdade, podemos removê-los daqui porque

117
00:07:35,780 --> 00:07:38,320
‫não precisaremos mais deles porque

118
00:07:38,320 --> 00:07:43,277
‫agora transferimos isso para a fábrica do manipulador, certo?

119
00:07:45,360 --> 00:07:49,403
‫Agora, aqui tudo o que precisamos fazer é

120
00:07:50,370 --> 00:07:53,243
‫substituir, como sempre, por modelo, e

121
00:07:56,300 --> 00:07:58,703
‫aqui, doc e dados.

122
00:08:01,700 --> 00:08:03,253
‫Agora, certo, perfeito.

123
00:08:07,480 --> 00:08:09,133
‫Então, vamos

124
00:08:13,947 --> 00:08:17,453
‫ver se isso funciona, getAll with Tour.

125
00:08:22,530 --> 00:08:25,530
‫E agora, eu realmente quero ver se

126
00:08:25,530 --> 00:08:28,300
‫isso ainda funciona com todos esses

127
00:08:28,300 --> 00:08:31,380
‫recursos, e então está aqui, getAll Tours,

128
00:08:31,380 --> 00:08:33,830
‫e então, vamos adicionar

129
00:08:33,830 --> 00:08:38,467
‫nossa string de consulta aqui e, digamos, uma duração maior ou

130
00:08:43,040 --> 00:08:47,063
‫igual a, digamos, um 10, e classificar por preço.

131
00:08:50,470 --> 00:08:53,133
‫Ok, então temos dois resultados aqui.

132
00:08:56,170 --> 00:08:58,490
‫Ok, não está funcionando.

133
00:08:58,490 --> 00:09:03,030
‫De qualquer forma, temos os dois resultados (risos) aqui,

134
00:09:03,030 --> 00:09:06,290
‫e ambos têm uma duração maior que

135
00:09:06,290 --> 00:09:09,360
‫10, e o preço é

136
00:09:09,360 --> 00:09:13,420
‫1497, e o segundo é mais alto, certo?

137
00:09:13,420 --> 00:09:15,810
‫Vamos colocá-lo aqui como sete, para termos

138
00:09:15,810 --> 00:09:17,673
‫um pouco mais de resultados.

139
00:09:19,949 --> 00:09:21,249
‫Ok, e agora temos cinco.

140
00:09:23,560 --> 00:09:27,480
‫Ok, de qualquer maneira, agora vamos fazer o mesmo com as

141
00:09:28,910 --> 00:09:32,440
‫análises porque estou muito animado para testar esses recursos da

142
00:09:32,440 --> 00:09:34,350
‫API nas análises também.

143
00:09:34,350 --> 00:09:36,510
‫Agora, um problema que temos aqui

144
00:09:36,510 --> 00:09:39,740
‫é que esse manipulador de rota na verdade tem essas

145
00:09:40,706 --> 00:09:44,610
‫duas linhas de código que todos os outros manipuladores getAll não têm, certo?

146
00:09:44,610 --> 00:09:47,730
‫Mas, o que vamos fazer aqui é simplesmente copiar esse

147
00:09:47,730 --> 00:09:50,730
‫código em nossa fábrica de manipuladores também, certo?

148
00:09:50,730 --> 00:09:52,150
‫Isso é meio

149
00:09:52,150 --> 00:09:56,040
‫que um hack, porque realmente só precisamos dele para getAll

150
00:09:56,040 --> 00:09:59,210
‫reviews, mas para contornar isso seria um pouco

151
00:09:59,210 --> 00:10:02,500
‫trabalhoso aqui nesta situação, e mais uma vez, eu

152
00:10:02,500 --> 00:10:05,623
‫simplesmente quero mantê-lo simples aqui, tudo bem.

153
00:10:07,010 --> 00:10:08,593
‫Então, vamos

154
00:10:10,530 --> 00:10:15,150
‫copiar isso aqui, e estou adicionando um

155
00:10:16,500 --> 00:10:21,500
‫comentário aqui para permitir getReviews aninhados no tour, ok?

156
00:10:24,980 --> 00:10:29,533
‫E então esse filtro, vamos passar também aqui, ok?

157
00:10:31,260 --> 00:10:33,363
‫Então, novamente, este é um

158
00:10:35,400 --> 00:10:37,460
‫pequeno hack, mas

159
00:10:37,460 --> 00:10:41,770
‫vou deixá-lo aqui assim porque acho que é razoável, certo.

160
00:10:41,770 --> 00:10:44,223
‫De qualquer forma, vamos agora nos livrar

161
00:10:45,260 --> 00:10:48,373
‫disso, então fábrica. getAll and review, ok?

162
00:10:54,476 --> 00:10:57,493
‫Vamos realmente colocar isso aqui ao lado de todos os outros.

163
00:11:02,430 --> 00:11:03,430
‫E agora,

164
00:11:03,430 --> 00:11:07,340
‫como você pode ver, na verdade não precisamos mais desse catchAsync

165
00:11:07,340 --> 00:11:09,200
‫aqui, então vou comentá-lo aqui

166
00:11:09,200 --> 00:11:12,300
‫porque, quem sabe, talvez no futuro vamos precisar dele

167
00:11:12,300 --> 00:11:15,523
‫para alguma outra função de Middleware aqui, tudo direito.

168
00:11:16,870 --> 00:11:18,660
‫Então, isso parece bom

169
00:11:18,660 --> 00:11:21,783
‫e limpo, e agora vamos testar os comentários getAll.

170
00:11:23,420 --> 00:11:28,420
‫Tudo bem, então vamos salvar as alterações aqui também.

171
00:11:30,240 --> 00:11:32,310
‫Não precisamos desses,

172
00:11:32,310 --> 00:11:36,143
‫mas, na verdade, quero receber todas as avaliações.

173
00:11:37,530 --> 00:11:39,743
‫Portanto, no momento temos

174
00:11:40,980 --> 00:11:43,430
‫quatro análises, vamos tentar filtrar as

175
00:11:43,430 --> 00:11:46,853
‫análises apenas com uma classificação de quatro, digamos.

176
00:11:48,860 --> 00:11:53,860
‫Portanto, string de consulta, classificação é igual a quatro.

177
00:11:57,820 --> 00:12:00,170
‫Ah, e realmente funciona,

178
00:12:00,170 --> 00:12:02,850
‫tão bom, isso é muito bom.

179
00:12:02,850 --> 00:12:06,780
‫Assim, assim, temos acesso a todos esses recursos da

180
00:12:06,780 --> 00:12:11,780
‫API, como filtragem, classificação, paginação e todas as coisas boas que

181
00:12:11,810 --> 00:12:13,988
‫implementamos (risos) há muito tempo

182
00:12:13,988 --> 00:12:15,890
‫no curso, certo?

183
00:12:15,890 --> 00:12:17,380
‫E também quero

184
00:12:17,380 --> 00:12:21,423
‫ter certeza de que este getAll reviews on Tour também funcione.

185
00:12:22,300 --> 00:12:24,120
‫Então, vamos verificar isso

186
00:12:24,120 --> 00:12:26,893
‫e, sim, você verá que realmente funciona.

187
00:12:28,050 --> 00:12:30,380
‫Então, o Tour ID

188
00:12:30,380 --> 00:12:34,490
‫que temos aqui é exatamente aquele aqui e aqui.

189
00:12:34,490 --> 00:12:36,840
‫Então, aquele também

190
00:12:36,840 --> 00:12:39,580
‫está funcionando, então vamos finalmente

191
00:12:39,580 --> 00:12:44,060
‫usar getAll para o controlador de usuário, certo.

192
00:12:44,060 --> 00:12:46,733
‫Então, basicamente substituindo simplesmente

193
00:12:47,760 --> 00:12:52,760
‫isso, então fábrica. getAll user, tudo bem.

194
00:12:55,180 --> 00:12:57,174
‫E, na verdade,

195
00:12:57,174 --> 00:13:01,483
‫vamos colocar este aqui perto dos outros, certo.

196
00:13:04,960 --> 00:13:06,910
‫E, então, este também, então

197
00:13:06,910 --> 00:13:09,650
‫basicamente tendo todos esses gerados por funções

198
00:13:09,650 --> 00:13:11,590
‫de fábrica juntos, e

199
00:13:11,590 --> 00:13:14,383
‫então todos os outros simplesmente acima deles.

200
00:13:15,800 --> 00:13:18,580
‫Tudo bem, vamos fazer o mesmo aqui, este já

201
00:13:18,580 --> 00:13:20,290
‫está bom e limpo, e

202
00:13:20,290 --> 00:13:23,153
‫o mesmo para o controlador de Tour, então o

203
00:13:24,170 --> 00:13:25,620
‫que mais temos aqui?

204
00:13:27,430 --> 00:13:29,263
‫Podemos nos livrar

205
00:13:30,690 --> 00:13:34,000
‫deste e, ok, acho que fica bem assim.

206
00:13:34,000 --> 00:13:37,150
‫Novamente, podemos comentar este trecho de código

207
00:13:37,150 --> 00:13:40,410
‫porque, pelo menos por agora, não precisamos mais dele.

208
00:13:40,410 --> 00:13:44,623
‫E então, só para testar novamente aqui com os usuários, vamos

209
00:13:45,640 --> 00:13:47,423
‫juntar todos eles e,

210
00:13:48,890 --> 00:13:50,973
‫de fato, aqui estão eles.

211
00:13:53,320 --> 00:13:55,960
‫Agora também podemos dizer que

212
00:13:55,960 --> 00:13:58,873
‫queremos apenas aqueles com a função

213
00:14:00,490 --> 00:14:03,760
‫de usuário e, de fato, isso também funciona.

214
00:14:03,760 --> 00:14:07,500
‫Ótimo, e isso na verdade encerra essa parte da criação

215
00:14:07,500 --> 00:14:10,170
‫de funções de fábrica do manipulador, e

216
00:14:10,170 --> 00:14:14,300
‫isso realmente foi um grande passo à frente em nosso projeto,

217
00:14:14,300 --> 00:14:16,030
‫então lembre-se que,

218
00:14:16,030 --> 00:14:18,710
‫um pouco mais tarde, também criaremos um

219
00:14:18,710 --> 00:14:22,080
‫recurso de reserva, e você verá que provavelmente nós

220
00:14:22,080 --> 00:14:25,070
‫seremos capazes de criar a API principal para

221
00:14:25,070 --> 00:14:27,310
‫essas reservas em cerca de cinco

222
00:14:27,310 --> 00:14:32,310
‫segundos ou algo assim, simplesmente usando essas cinco funções de fábrica, tudo bem.

223
00:14:32,350 --> 00:14:34,750
‫De qualquer forma, bom trabalho, ótimo trabalho,

224
00:14:34,750 --> 00:14:36,683
‫e nos vemos no próximo.

