﻿1
00:00:01,100 --> 00:00:02,860
‫Instrutor: Assim como o

2
00:00:02,860 --> 00:00:06,080
‫Express, o Mongoose também possui o conceito de middleware.

3
00:00:06,080 --> 00:00:08,270
‫E agora vamos aprender sobre o

4
00:00:08,270 --> 00:00:11,163
‫primeiro tipo de middleware, que é o middleware de documento.

5
00:00:12,830 --> 00:00:15,330
‫Agora, assim como no Express, podemos usar

6
00:00:15,330 --> 00:00:17,860
‫o middleware Mongoose para fazer algo acontecer

7
00:00:17,860 --> 00:00:19,430
‫entre dois eventos.

8
00:00:19,430 --> 00:00:22,740
‫Por exemplo, cada vez que um novo documento

9
00:00:22,740 --> 00:00:25,740
‫é salvo no banco de dados, podemos

10
00:00:25,740 --> 00:00:29,450
‫executar uma função entre o comando salvar e o

11
00:00:29,450 --> 00:00:33,480
‫salvamento real do documento, ou também após o salvamento real.

12
00:00:33,480 --> 00:00:35,820
‫E essa é a razão pela qual

13
00:00:35,820 --> 00:00:38,590
‫o middleware Mongoose também é chamado de pré e pós-ganchos.

14
00:00:38,590 --> 00:00:41,140
‫Então, novamente, porque podemos definir funções para

15
00:00:41,140 --> 00:00:44,710
‫serem executadas antes ou depois de um determinado evento, como salvar

16
00:00:44,710 --> 00:00:47,100
‫um documento no banco de dados.

17
00:00:47,100 --> 00:00:52,100
‫Portanto, o middleware é um conceito absolutamente fundamental no

18
00:00:52,100 --> 00:00:55,180
‫Mongoose, assim como no Express.

19
00:00:55,180 --> 00:00:57,190
‫E há inúmeras possibilidades

20
00:00:57,190 --> 00:00:59,780
‫e casos de uso para middleware, e

21
00:00:59,780 --> 00:01:02,540
‫vamos usar middleware o tempo todo neste projeto.

22
00:01:02,540 --> 00:01:06,050
‫Portanto, há quatro tipos de middleware

23
00:01:06,050 --> 00:01:10,080
‫no Mongoose: middleware de documento, consulta, agregação e modelo.

24
00:01:10,080 --> 00:01:12,110
‫E nesta palestra, vamos

25
00:01:12,110 --> 00:01:14,410
‫falar sobre middleware de documento, que

26
00:01:14,410 --> 00:01:18,110
‫é o middleware que pode atuar no documento processado atualmente.

27
00:01:18,110 --> 00:01:20,920
‫Portanto, assim como as propriedades virtuais,

28
00:01:20,920 --> 00:01:23,613
‫definimos um middleware no esquema,

29
00:01:25,800 --> 00:01:28,543
‫portanto, tourSchema. pré.

30
00:01:30,030 --> 00:01:32,850
‫E isso é para middleware pré, que novamente,

31
00:01:32,850 --> 00:01:35,450
‫será executado antes de um evento real.

32
00:01:35,450 --> 00:01:39,360
‫E esse evento, neste caso, é o evento de salvamento.

33
00:01:39,360 --> 00:01:41,350
‫E então esta função de retorno de

34
00:01:41,350 --> 00:01:42,613
‫chamada que iremos definir

35
00:01:43,870 --> 00:01:44,820
‫aqui a

36
00:01:48,200 --> 00:01:51,980
‫seguir, então funcione para que esta função seja chamada antes de um documento

37
00:01:51,980 --> 00:01:53,943
‫real ser salvo no banco de dados.

38
00:01:55,407 --> 00:02:00,407
‫Portanto, este é um middleware de documento e é

39
00:02:02,010 --> 00:02:05,910
‫executado, deixe-me escrever tudo isso aqui.

40
00:02:05,910 --> 00:02:09,640
‫Portanto, ele é executado antes do comando

41
00:02:10,550 --> 00:02:13,953
‫save e do. criar o comando.

42
00:02:14,860 --> 00:02:17,040
‫Mas não na inserção de muitos.

43
00:02:17,040 --> 00:02:22,040
‫Portanto, se usarmos este comando aqui, insertMany, isso não irá

44
00:02:22,450 --> 00:02:26,153
‫realmente acionar o middleware de salvamento.

45
00:02:27,600 --> 00:02:29,140
‫Portanto, sempre tenha isso em mente.

46
00:02:29,140 --> 00:02:32,780
‫É muito importante perceber que somente ao

47
00:02:32,780 --> 00:02:35,560
‫salvar e criar o middleware aqui

48
00:02:35,560 --> 00:02:36,943
‫será executado.

49
00:02:38,929 --> 00:02:41,740
‫E então vamos começar fazendo um console simples. log e o que

50
00:02:42,670 --> 00:02:45,253
‫vou registrar por meio do console é o seguinte.

51
00:02:46,350 --> 00:02:49,870
‫E assim, em um middleware salvo, a palavra-chave de disco

52
00:02:49,870 --> 00:02:53,100
‫aqui vai apontar para o documento processado atualmente.

53
00:02:53,100 --> 00:02:56,640
‫E é por isso que é chamado de middleware de documento.

54
00:02:56,640 --> 00:02:58,740
‫Novamente, porque nesta função

55
00:02:58,740 --> 00:03:02,470
‫aqui, temos acesso ao documento que está sendo processado.

56
00:03:02,470 --> 00:03:05,133
‫Portanto, neste caso, o documento que está sendo salvo.

57
00:03:06,078 --> 00:03:09,240
‫E deixe-me mostrar isso rapidamente para você usando

58
00:03:09,240 --> 00:03:11,300
‫este console. registro.

59
00:03:11,300 --> 00:03:13,610
‫E então, para acionar agora esta função,

60
00:03:13,610 --> 00:03:17,800
‫lembre-se de que precisamos executar um comando de salvamento ou um comando de criação.

61
00:03:17,800 --> 00:03:22,020
‫E agora precisamos criar um novo tour usando

62
00:03:22,020 --> 00:03:26,013
‫nossa API para, sim, acionar este middleware.

63
00:03:27,680 --> 00:03:32,680
‫Então, vamos aqui para, para o carteiro, e vou começar salvando

64
00:03:33,880 --> 00:03:36,830
‫essas duas novas rotas que criamos

65
00:03:38,450 --> 00:03:42,313
‫nas palestras anteriores, então pegue um plano mensal.

66
00:03:47,300 --> 00:03:52,300
‫E este aqui é obter estatísticas do tour.

67
00:03:56,031 --> 00:03:59,523
‫Agora posso fechá-los e criar um novo tour.

68
00:04:00,430 --> 00:04:03,060
‫E especificamos os dados aqui no corpo.

69
00:04:03,060 --> 00:04:06,300
‫Agora, nem todas as coisas aqui são realmente necessárias, então

70
00:04:06,300 --> 00:04:08,730
‫vamos dar uma olhada no que realmente é

71
00:04:08,730 --> 00:04:11,040
‫necessário e nos livrar do resto.

72
00:04:11,040 --> 00:04:13,483
‫Portanto, o imageCover é necessário,

73
00:04:14,610 --> 00:04:18,500
‫o resumo, é claro o preço, e sim.

74
00:04:18,500 --> 00:04:20,830
‫Então, vamos nos livrar do que

75
00:04:21,760 --> 00:04:24,483
‫realmente não precisamos aqui, apenas para mantê-lo no mínimo.

76
00:04:26,000 --> 00:04:28,730
‫Então, as avaliações, quantidade, média, então isso

77
00:04:28,730 --> 00:04:30,080
‫não é necessário.

78
00:04:36,550 --> 00:04:38,490
‫Então, vou chamar este

79
00:04:38,490 --> 00:04:43,490
‫aqui de tour de teste, apenas para mantê-lo bem simples aqui.

80
00:04:45,702 --> 00:04:49,370
‫Agora vamos enviar essa solicitação e, de fato, ele criou

81
00:04:49,370 --> 00:04:52,420
‫o novo documento e agora vamos dar

82
00:04:52,420 --> 00:04:56,370
‫uma olhada em nosso console e ver esse documento aqui.

83
00:04:56,370 --> 00:04:58,650
‫E, de fato, aqui está.

84
00:04:58,650 --> 00:05:01,540
‫Então, vamos aumentar isso aqui um

85
00:05:01,540 --> 00:05:04,900
‫pouco e é assim que nosso documento

86
00:05:04,900 --> 00:05:08,510
‫está antes de ser salvo no banco de dados.

87
00:05:08,510 --> 00:05:11,710
‫E então aqui temos as classificações média e quantidade,

88
00:05:11,710 --> 00:05:13,500
‫que são definidas por padrão.

89
00:05:13,500 --> 00:05:17,077
‫Lembre-se, então, 4. 5 e zero, e

90
00:05:19,185 --> 00:05:21,930
‫então o timestamp criadoAt, e você pode até

91
00:05:21,930 --> 00:05:24,523
‫ver a propriedade virtual que definimos aqui.

92
00:05:25,700 --> 00:05:28,100
‫Então, novamente, isso é certo antes de realmente salvarmos

93
00:05:28,100 --> 00:05:30,140
‫esses dados no banco de dados.

94
00:05:30,140 --> 00:05:31,410
‫E então, neste ponto do

95
00:05:31,410 --> 00:05:34,600
‫tempo, ainda podemos agir sobre os dados antes que eles sejam salvos

96
00:05:34,600 --> 00:05:36,920
‫no banco de dados e é exatamente o

97
00:05:36,920 --> 00:05:38,173
‫que faremos agora.

98
00:05:39,520 --> 00:05:43,240
‫Então, aqui em nossa função de middleware.

99
00:05:43,240 --> 00:05:45,900
‫E o que eu quero fazer aqui é criar

100
00:05:45,900 --> 00:05:48,120
‫um slug para cada um desses documentos.

101
00:05:48,120 --> 00:05:50,080
‫Portanto, lembre-se de como, na primeira

102
00:05:50,080 --> 00:05:52,510
‫seção, criamos um slug para cada um dos

103
00:05:52,510 --> 00:05:54,313
‫produtos que tínhamos na loja.

104
00:05:55,180 --> 00:05:57,860
‫E então um slug é basicamente apenas

105
00:05:57,860 --> 00:06:01,590
‫uma string que podemos colocar na URL, geralmente com base em

106
00:06:01,590 --> 00:06:03,570
‫alguma string como o nome.

107
00:06:03,570 --> 00:06:05,780
‫Nesse caso, vamos criar um slug baseado

108
00:06:05,780 --> 00:06:07,433
‫aqui no nome do tour.

109
00:06:09,150 --> 00:06:14,150
‫Então lembre-se de como usamos o pacote slugify.

110
00:06:14,210 --> 00:06:16,360
‫E agora vamos instalá-lo.

111
00:06:20,120 --> 00:06:22,063
‫Tudo bem, enquanto isso,

112
00:06:23,430 --> 00:06:25,743
‫vamos prosseguir e exigir isso aqui.

113
00:06:33,270 --> 00:06:34,980
‫Portanto, exija slugify.

114
00:06:39,100 --> 00:06:41,893
‫Vamos voltar à nossa primeira janela aqui, na verdade.

115
00:06:43,530 --> 00:06:46,220
‫E agora, aqui embaixo, não queremos

116
00:06:46,220 --> 00:06:48,550
‫mais registrar isso no console.

117
00:06:48,550 --> 00:06:51,720
‫Mas, em vez disso, agora podemos dizer isso e,

118
00:06:51,720 --> 00:06:54,840
‫lembre-se, este é o documento processado atualmente.

119
00:06:54,840 --> 00:06:58,060
‫Portanto, agora podemos definir uma nova propriedade nele.

120
00:06:58,060 --> 00:06:59,860
‫E é exatamente isso que estou fazendo.

121
00:06:59,860 --> 00:07:03,250
‫Então, é isso. slug deve ser slugify, e

122
00:07:06,210 --> 00:07:08,390
‫então apenas uma string a partir da

123
00:07:08,390 --> 00:07:13,390
‫qual queremos criar um slug, e assim será. nome e depois também queremos passar

124
00:07:13,470 --> 00:07:15,890
‫a opção de que

125
00:07:15,890 --> 00:07:18,653
‫tudo deve ser convertido para minúsculo,

126
00:07:19,970 --> 00:07:24,220
‫e isso é menor: verdadeiro, e agora vou salvá-lo.

127
00:07:24,220 --> 00:07:26,290
‫E uma coisa que ainda

128
00:07:26,290 --> 00:07:28,710
‫não falamos é a próxima função.

129
00:07:28,710 --> 00:07:32,440
‫Assim como no Express, também temos a próxima função no

130
00:07:32,440 --> 00:07:35,300
‫middleware mMngoose, basicamente para chamar o próximo

131
00:07:35,300 --> 00:07:37,780
‫middleware na pilha como já sabemos.

132
00:07:37,780 --> 00:07:40,680
‫Agora, neste caso, temos apenas uma função de middleware, e

133
00:07:40,680 --> 00:07:43,100
‫é por isso que não encontramos nenhum

134
00:07:43,100 --> 00:07:46,433
‫problema, nem mesmo chamando em seguida, mas vamos fazer isso agora.

135
00:07:47,470 --> 00:07:50,040
‫E assim, cada função de middleware,

136
00:07:50,040 --> 00:07:52,723
‫em um middleware pré-salvo, tem acesso ao próximo.

137
00:07:54,492 --> 00:07:57,700
‫Isso é exatamente o mesmo que no Express

138
00:07:57,700 --> 00:08:01,070
‫e, ao final do middleware, chamamos next, e

139
00:08:01,070 --> 00:08:03,300
‫isso chamará o próximo middleware

140
00:08:03,300 --> 00:08:04,583
‫na pilha.

141
00:08:04,583 --> 00:08:07,540
‫Então, vamos tentar novamente.

142
00:08:07,540 --> 00:08:10,556
‫E isso será chamado de tour de teste número dois.

143
00:08:10,556 --> 00:08:13,770
‫Muito simples, mande para o

144
00:08:13,770 --> 00:08:16,900
‫céu, e vamos aguardar.

145
00:08:16,900 --> 00:08:20,930
‫E agora, por algum motivo, não está realmente aqui.

146
00:08:20,930 --> 00:08:22,950
‫Vamos ver se obtivemos algum

147
00:08:22,950 --> 00:08:24,630
‫erro e realmente não.

148
00:08:24,630 --> 00:08:27,570
‫Mas o motivo pelo qual não está

149
00:08:27,570 --> 00:08:31,913
‫funcionando é que agora não temos nenhum slug em nosso esquema.

150
00:08:31,913 --> 00:08:35,360
‫E lembre-se de que isso realmente aconteceu conosco antes,

151
00:08:35,360 --> 00:08:38,150
‫quando tínhamos apenas alguns campos no esquema.

152
00:08:38,150 --> 00:08:40,150
‫E quando definirmos alguns campos

153
00:08:40,150 --> 00:08:42,450
‫que não estavam no esquema, eles

154
00:08:42,450 --> 00:08:44,770
‫simplesmente não persistiram no banco de dados.

155
00:08:44,770 --> 00:08:47,070
‫E a mesma coisa está acontecendo agora,

156
00:08:47,070 --> 00:08:50,670
‫então definimos a propriedade slug, mas não está em nosso esquema.

157
00:08:50,670 --> 00:08:54,200
‫E, portanto, não foi salvo no banco de dados, então

158
00:08:54,200 --> 00:08:56,990
‫vamos corrigir isso rapidamente e vamos colocá-lo, oh,

159
00:08:56,990 --> 00:08:59,490
‫não sei, não importa muito, pode colocá-lo

160
00:08:59,490 --> 00:09:01,373
‫aqui logo após o

161
00:09:03,210 --> 00:09:06,253
‫nome, então o slug deve simplesmente seja uma string.

162
00:09:08,443 --> 00:09:10,363
‫E isso deve consertar.

163
00:09:11,610 --> 00:09:14,823
‫Portanto, vamos voltar e criar o tour de teste número três.

164
00:09:15,880 --> 00:09:18,220
‫Porque não pode ser o mesmo, porque lembre-se que

165
00:09:18,220 --> 00:09:20,453
‫não podemos ter passeios com o mesmo nome.

166
00:09:22,260 --> 00:09:26,290
‫Então, faça novamente, e agora de fato temos a propriedade slug

167
00:09:26,290 --> 00:09:29,900
‫bem aqui e ela é baseada no nome, como você

168
00:09:29,900 --> 00:09:31,170
‫pode ver aqui.

169
00:09:31,170 --> 00:09:33,853
‫Ótimo, então vamos voltar aqui, vamos reduzir

170
00:09:34,770 --> 00:09:36,463
‫isso um pouco.

171
00:09:37,480 --> 00:09:40,957
‫E aqui temos o middleware de pré-documento.

172
00:09:40,957 --> 00:09:44,000
‫Agora vamos experimentar rapidamente, também,

173
00:09:44,000 --> 00:09:45,593
‫um pós-middleware.

174
00:09:47,700 --> 00:09:52,700
‫Então tourSchema. postar e usar salvar novamente.

175
00:09:55,487 --> 00:09:58,740
‫E depois a função de callback, que no caso

176
00:09:58,740 --> 00:10:01,090
‫do post middleware tem acesso

177
00:10:01,090 --> 00:10:03,860
‫não só ao próximo, mas também ao documento

178
00:10:03,860 --> 00:10:06,823
‫que acabou de ser salvo no banco de dados.

179
00:10:07,690 --> 00:10:10,883
‫Então, vamos chamá-lo de doc e depois o próximo.

180
00:10:12,193 --> 00:10:14,650
‫E assim as funções pós-middleware são

181
00:10:14,650 --> 00:10:17,750
‫executadas depois que todas as funções pré-middleware

182
00:10:17,750 --> 00:10:20,090
‫foram concluídas, tudo bem.

183
00:10:20,090 --> 00:10:23,440
‫Portanto, aqui, na verdade, não temos mais a palavra-chave disk,

184
00:10:23,440 --> 00:10:25,910
‫mas em vez disso, temos o documento

185
00:10:25,910 --> 00:10:27,853
‫basicamente concluído aqui no doc.

186
00:10:30,960 --> 00:10:34,650
‫Então, vamos apenas registrar esse documento concluído no console

187
00:10:34,650 --> 00:10:37,640
‫e, em seguida, chamar em seguida.

188
00:10:37,640 --> 00:10:39,713
‫Agora, neste caso novamente, temos

189
00:10:39,713 --> 00:10:43,200
‫apenas um post middleware e, portanto, não precisaríamos realmente

190
00:10:43,200 --> 00:10:46,860
‫do próximo, mas é uma prática recomendada simplesmente sempre incluí-lo.

191
00:10:46,860 --> 00:10:50,310
‫Agora outra coisa que eu queria mostrar a vocês

192
00:10:50,310 --> 00:10:52,470
‫é que podemos ter, é

193
00:10:52,470 --> 00:10:56,283
‫claro, vários pré-middlewares ou também pós-middlewares para o mesmo gancho.

194
00:10:57,270 --> 00:11:01,820
‫E gancho é o que chamamos de salvar aqui.

195
00:11:01,820 --> 00:11:04,690
‫Portanto, esse middleware aqui é basicamente

196
00:11:04,690 --> 00:11:07,810
‫o que chamamos de gancho de pré-salvamento.

197
00:11:07,810 --> 00:11:11,490
‫Portanto, você verá essa terminologia o tempo todo.

198
00:11:11,490 --> 00:11:14,173
‫Portanto, alguns o chamam de middleware e outros de ganchos.

199
00:11:15,270 --> 00:11:17,260
‫E então este será um gancho de

200
00:11:17,260 --> 00:11:18,773
‫pré-salvamento ou middleware pré-salvamento.

201
00:11:21,880 --> 00:11:25,823
‫Então funcione, e este tem acesso ao próximo.

202
00:11:28,770 --> 00:11:31,433
‫E então vamos apenas registrar

203
00:11:33,780 --> 00:11:37,963
‫algo no console aqui, como salvará o documento.

204
00:11:40,740 --> 00:11:45,023
‫E então o próximo, e é claro, deve ser o próximo.

205
00:11:46,880 --> 00:11:48,750
‫Só para ver se obtemos

206
00:11:48,750 --> 00:11:50,653
‫algum erro, vou omitir o próximo aqui.

207
00:11:51,490 --> 00:11:55,283
‫Só para ver o que acontece quando não ligamos.

208
00:11:57,290 --> 00:11:59,080
‫Vou criar um novo

209
00:11:59,080 --> 00:12:01,230
‫tour e, ao final desta palestra,

210
00:12:01,230 --> 00:12:04,543
‫vou deletar todos eles, mas por enquanto precisamos deles aqui.

211
00:12:06,410 --> 00:12:09,930
‫E agora você vê que não está realmente terminando, então

212
00:12:09,930 --> 00:12:12,620
‫estamos presos naquela função de middleware que não

213
00:12:12,620 --> 00:12:14,473
‫tem a próxima chamada.

214
00:12:16,410 --> 00:12:18,343
‫Então, basicamente, estamos presos aqui.

215
00:12:19,550 --> 00:12:20,970
‫Portanto, vamos cancelar a

216
00:12:22,810 --> 00:12:25,780
‫solicitação e, em seguida, recuperá-la aqui e

217
00:12:25,780 --> 00:12:27,173
‫tentar novamente.

218
00:12:29,550 --> 00:12:32,070
‫E agora funcionou de fato.

219
00:12:32,070 --> 00:12:35,740
‫Então, nosso slug está aqui, certo, vamos dar uma

220
00:12:35,740 --> 00:12:38,590
‫olhada em nosso console e, de fato,

221
00:12:38,590 --> 00:12:41,973
‫nosso segundo middleware pré também é executado, então

222
00:12:42,850 --> 00:12:45,797
‫o registro salvará o documento e, em

223
00:12:45,797 --> 00:12:49,320
‫seguida, nosso middleware pós-logado no console o documento final,

224
00:12:49,320 --> 00:12:51,570
‫e isso também já

225
00:12:51,570 --> 00:12:55,043
‫deve ter a lesma e sim, aqui está.

226
00:12:56,050 --> 00:12:57,870
‫E isso é tudo o que eu

227
00:12:57,870 --> 00:13:00,360
‫tinha para mostrar a você sobre o middleware de documentos.

228
00:13:00,360 --> 00:13:03,065
‫Agora vou comentar esses dois aqui porque

229
00:13:03,065 --> 00:13:06,680
‫não quero poluir meu log aqui o tempo todo com

230
00:13:06,680 --> 00:13:09,110
‫esses console. logs, mas ainda

231
00:13:09,110 --> 00:13:11,190
‫estou mantendo-os aqui, novamente, como

232
00:13:11,190 --> 00:13:12,173
‫uma referência.

233
00:13:13,530 --> 00:13:16,330
‫Então, o que quero que você lembre desta palestra é

234
00:13:16,330 --> 00:13:18,980
‫que podemos ter o middleware em execução antes e

235
00:13:18,980 --> 00:13:20,930
‫depois de um determinado evento.

236
00:13:20,930 --> 00:13:23,160
‫E, no caso de middleware de

237
00:13:23,160 --> 00:13:25,850
‫documento, esse evento geralmente é o evento de salvamento.

238
00:13:25,850 --> 00:13:29,260
‫E então, na função de middleware em si, temos

239
00:13:29,260 --> 00:13:31,660
‫acesso à palavra-chave do disco,

240
00:13:31,660 --> 00:13:35,163
‫que vai apontar para o documento que está sendo salvo.

241
00:13:36,190 --> 00:13:38,232
‫E também é muito importante ter

242
00:13:38,232 --> 00:13:42,650
‫em mente que este middleware de salvamento só é executado para os métodos de

243
00:13:42,650 --> 00:13:44,650
‫salvamento e criação do Mongoose.

244
00:13:44,650 --> 00:13:47,690
‫Não vai rodar, por exemplo, para inserir muitos

245
00:13:47,690 --> 00:13:50,490
‫e também não para localizar e atualizar

246
00:13:50,490 --> 00:13:54,380
‫ou localizar por ID e atualizar, que já usamos antes.

247
00:13:54,380 --> 00:13:58,110
‫Por exemplo, em algum lugar aqui

248
00:14:00,870 --> 00:14:04,960
‫temos findByIdAndUpdate, mas isso não irá acionar este

249
00:14:04,960 --> 00:14:06,862
‫middleware de salvamento.

250
00:14:06,862 --> 00:14:09,610
‫Portanto, isso é muito importante ter em mente

251
00:14:09,610 --> 00:14:11,550
‫porque, na verdade, um

252
00:14:11,550 --> 00:14:14,950
‫pouco mais adiante neste projeto, teremos que contornar essa limitação.

253
00:14:14,950 --> 00:14:17,160
‫Tudo bem, então este é um

254
00:14:17,160 --> 00:14:20,880
‫middleware de documento para manipular documentos que estão sendo salvos no momento.

255
00:14:20,880 --> 00:14:23,833
‫A seguir, vamos falar sobre middleware de consulta.

