﻿1
00:00:01,210 --> 00:00:04,370
‫Instrutor: Nesta aula, vamos implementar uma maneira melhor

2
00:00:04,370 --> 00:00:07,853
‫de detectar erros em todas as nossas funções assíncronas.

3
00:00:09,310 --> 00:00:12,180
‫Então, agora, em todas as nossas

4
00:00:12,180 --> 00:00:15,750
‫funções assíncronas, temos esses blocos try catch, certo?

5
00:00:15,750 --> 00:00:20,430
‫Portanto, lembre-se de como adicionamos a todas essas funções de manipulação este bloco de

6
00:00:20,430 --> 00:00:23,930
‫tentativa e, em seguida, este bloco de captura, certo?

7
00:00:23,930 --> 00:00:26,430
‫E todos eles têm isso porque

8
00:00:26,430 --> 00:00:28,900
‫todos eles são funções assíncronas e

9
00:00:28,900 --> 00:00:31,930
‫é assim que geralmente pegamos os erros dentro

10
00:00:31,930 --> 00:00:33,863
‫de uma função assíncrona.

11
00:00:34,800 --> 00:00:37,100
‫Então, usando um bloco try catch.

12
00:00:37,100 --> 00:00:41,170
‫Agora, isso realmente faz nosso código parecer confuso e sem foco,

13
00:00:41,170 --> 00:00:44,740
‫então o objetivo deste método createTour aqui, por exemplo, é

14
00:00:44,740 --> 00:00:46,560
‫apenas executar este código.

15
00:00:46,560 --> 00:00:48,500
‫Na verdade, não queremos mexer

16
00:00:48,500 --> 00:00:49,934
‫com o tratamento

17
00:00:49,934 --> 00:00:53,450
‫de erros aqui, então agora temos esses dois blocos

18
00:00:53,450 --> 00:00:55,690
‫extras, try and catch, e com

19
00:00:55,690 --> 00:00:57,900
‫isso vem essa indentação extra aqui

20
00:00:57,900 --> 00:01:01,730
‫e então, novamente, isso realmente faz nosso código não parecer limpo.

21
00:01:01,730 --> 00:01:03,550
‫Realmente não está focado.

22
00:01:03,550 --> 00:01:05,940
‫Além disso, temos muitos códigos duplicados aqui

23
00:01:05,940 --> 00:01:07,830
‫porque em cada um desses

24
00:01:07,830 --> 00:01:10,310
‫manipuladores, temos um bloco catch bastante semelhante.

25
00:01:10,310 --> 00:01:12,250
‫Então, em tudo isso, tudo o

26
00:01:12,250 --> 00:01:14,690
‫que estamos fazendo é realmente enviar essa resposta.

27
00:01:14,690 --> 00:01:17,490
‫E essa resposta nem seria enviada aqui,

28
00:01:17,490 --> 00:01:20,900
‫mas em nosso middleware de tratamento de erros global, lembre-se,

29
00:01:20,900 --> 00:01:23,010
‫mas esse é outro tópico.

30
00:01:23,010 --> 00:01:24,910
‫Por enquanto, o que

31
00:01:24,910 --> 00:01:27,170
‫estou tentando focar aqui é que

32
00:01:27,170 --> 00:01:30,840
‫esses blocos try catch dentro de cada uma de nossas funções

33
00:01:30,840 --> 00:01:34,010
‫assíncronas não são ideais, então vamos tentar consertar isso.

34
00:01:34,010 --> 00:01:37,100
‫E a solução é basicamente tirar o bloco try

35
00:01:37,100 --> 00:01:39,890
‫catch daqui e colocá-lo em um nível superior

36
00:01:39,890 --> 00:01:41,450
‫em outra função.

37
00:01:41,450 --> 00:01:43,000
‫Então, basicamente o que

38
00:01:43,000 --> 00:01:44,470
‫vamos fazer é

39
00:01:44,470 --> 00:01:49,326
‫criar uma função e, em seguida, envolver essa função assíncrona nessa função.

40
00:01:49,326 --> 00:01:50,630
‫Tudo bem?

41
00:01:50,630 --> 00:01:53,333
‫E então deixe-me chamá-lo de catchAsync.

42
00:01:56,960 --> 00:02:00,290
‫Portanto, catchAsync, e estou chamando-o assim, porque

43
00:02:00,290 --> 00:02:02,380
‫o objetivo desta função

44
00:02:02,380 --> 00:02:05,410
‫é simplesmente capturar nossos erros assíncronos.

45
00:02:05,410 --> 00:02:06,613
‫Tão simples, certo?

46
00:02:07,500 --> 00:02:09,840
‫Então, para esta

47
00:02:09,840 --> 00:02:13,660
‫função catchAsync, vamos passar uma função, ok?

48
00:02:13,660 --> 00:02:16,820
‫E lembre-se, a função que passaremos

49
00:02:16,820 --> 00:02:19,030
‫é basicamente esta.

50
00:02:19,030 --> 00:02:21,678
‫Agora que estamos trabalhando com este exemplo,

51
00:02:21,678 --> 00:02:25,420
‫a função que passaremos para o catchAsync é esta

52
00:02:25,420 --> 00:02:27,840
‫função, porque é aqui que queremos

53
00:02:27,840 --> 00:02:30,033
‫capturar os erros assíncronos.

54
00:02:31,030 --> 00:02:32,563
‫Então, vamos realmente fazer isso.

55
00:02:34,090 --> 00:02:39,090
‫Então fn e, em seguida, envolva toda a função aí.

56
00:02:40,950 --> 00:02:43,340
‫Em seguida, o que temos que fazer

57
00:02:43,340 --> 00:02:45,440
‫é realmente chamar essa função aqui.

58
00:02:46,670 --> 00:02:49,640
‫Então chame-a, e essa função

59
00:02:49,640 --> 00:02:53,810
‫deve receber solicitação, resposta e, de fato, também próxima.

60
00:02:53,810 --> 00:02:57,440
‫Portanto, este aqui também deve ter next e todas as outras

61
00:02:57,440 --> 00:02:58,860
‫também, porque lembre-se

62
00:02:58,860 --> 00:03:01,260
‫de que precisamos da próxima função para

63
00:03:01,260 --> 00:03:03,540
‫passar o erro para ela de

64
00:03:03,540 --> 00:03:05,660
‫forma que esse erro possa ser

65
00:03:05,660 --> 00:03:08,470
‫tratado no middleware de tratamento de erros global.

66
00:03:08,470 --> 00:03:10,360
‫Portanto, todas essas funções precisarão de

67
00:03:10,360 --> 00:03:12,063
‫solicitação, resposta e a próxima.

68
00:03:12,950 --> 00:03:14,540
‫Mas vamos deixar isso para depois.

69
00:03:14,540 --> 00:03:17,090
‫Por enquanto, vamos realmente nos concentrar em nosso catchAsync aqui.

70
00:03:19,180 --> 00:03:22,120
‫Portanto, esta função aqui que passamos para async, que

71
00:03:22,120 --> 00:03:24,290
‫agora é chamada de fn aqui,

72
00:03:24,290 --> 00:03:26,040
‫é uma função assíncrona.

73
00:03:26,040 --> 00:03:28,080
‫E lembre-se de que

74
00:03:28,080 --> 00:03:30,490
‫as funções assíncronas retornam promessas, certo?

75
00:03:30,490 --> 00:03:33,500
‫E quando há um erro dentro de

76
00:03:33,500 --> 00:03:37,310
‫uma função assíncrona, isso basicamente significa que a promessa foi rejeitada.

77
00:03:37,310 --> 00:03:40,160
‫E aqui em cima, onde realmente chamamos essa função,

78
00:03:40,160 --> 00:03:41,893
‫podemos detectar esse erro.

79
00:03:43,790 --> 00:03:46,040
‫Portanto, capturamos aqui, em vez

80
00:03:46,040 --> 00:03:48,590
‫de capturá-lo no bloco try catch.

81
00:03:48,590 --> 00:03:53,590
‫Então, pegue e dê o erro e, em seguida, passe o erro.

82
00:03:57,040 --> 00:03:58,160
‫E podemos

83
00:03:58,160 --> 00:04:01,810
‫simplificar isso, mas, por enquanto, vamos remover o bloco try

84
00:04:01,810 --> 00:04:05,103
‫catch aqui, e simplesmente nos concentrar nesta parte.

85
00:04:07,580 --> 00:04:08,920
‫Isso é tudo

86
00:04:08,920 --> 00:04:12,110
‫o que queremos e não precisamos mais do bloco try

87
00:04:12,110 --> 00:04:15,660
‫catch, de novo, porque esse catch agora é basicamente transferido para

88
00:04:15,660 --> 00:04:17,113
‫aqui, para esta linha.

89
00:04:18,500 --> 00:04:20,350
‫Não é mais um bloco

90
00:04:20,350 --> 00:04:22,560
‫catch, porque aqui é apenas mais

91
00:04:22,560 --> 00:04:26,060
‫fácil usar a promessa de que a função fn retorna.

92
00:04:26,060 --> 00:04:29,640
‫Então, novamente, essa função fn é essa função, então

93
00:04:29,640 --> 00:04:32,270
‫aquela que passamos para catchAsync, e

94
00:04:32,270 --> 00:04:34,650
‫isso vai retornar uma promessa.

95
00:04:34,650 --> 00:04:37,100
‫E, na verdade, percebi aqui que

96
00:04:37,100 --> 00:04:40,110
‫isso, é claro, deveria se chamar catchAsync, certo?

97
00:04:40,110 --> 00:04:41,800
‫E então aquela

98
00:04:41,800 --> 00:04:45,447
‫função que passamos para catchAsync, esta é, obviamente, fn.

99
00:04:45,447 --> 00:04:46,280
‫Tudo bem?

100
00:04:46,280 --> 00:04:48,980
‫Então, o argumento que passamos lá.

101
00:04:48,980 --> 00:04:51,590
‫Na verdade, existem dois grandes problemas com

102
00:04:51,590 --> 00:04:54,180
‫a maneira como isso é implementado

103
00:04:54,180 --> 00:04:57,240
‫agora e, dessa forma, não funcionaria de fato.

104
00:04:57,240 --> 00:04:59,340
‫Portanto, primeiro, esta chamada de função

105
00:04:59,340 --> 00:05:03,213
‫aqui não tem como saber a solicitação, a resposta e a próxima.

106
00:05:04,300 --> 00:05:07,460
‫Não os passamos para catchAsync aqui e,

107
00:05:07,460 --> 00:05:09,300
‫portanto, realmente não há

108
00:05:09,300 --> 00:05:12,693
‫como a função saber os valores desses parâmetros.

109
00:05:13,658 --> 00:05:15,610
‫E a segunda é

110
00:05:15,610 --> 00:05:18,473
‫que bem aqui estamos chamando a função assíncrona.

111
00:05:20,290 --> 00:05:22,290
‫E para ver isso um pouco melhor, vamos

112
00:05:23,200 --> 00:05:24,873
‫nos livrar completamente desse código.

113
00:05:26,370 --> 00:05:29,520
‫Então, aqui temos catchAsync e estamos chamando-o usando

114
00:05:29,520 --> 00:05:31,153
‫os parênteses, é claro.

115
00:05:32,350 --> 00:05:34,900
‫E então, dentro de catchAsync, também estamos

116
00:05:34,900 --> 00:05:37,760
‫chamando imediatamente a função fn, e não é

117
00:05:37,760 --> 00:05:40,130
‫assim que ela deveria funcionar.

118
00:05:40,130 --> 00:05:43,060
‫Portanto, createTour aqui deve ser realmente uma função, mas

119
00:05:43,060 --> 00:05:45,840
‫não o resultado da chamada de uma função.

120
00:05:45,840 --> 00:05:47,810
‫Mas é isso que está acontecendo agora.

121
00:05:47,810 --> 00:05:49,940
‫Então, agora, catchAsync está

122
00:05:49,940 --> 00:05:54,310
‫sendo chamado, que então chama essa função aqui, certo?

123
00:05:54,310 --> 00:05:56,890
‫E então, novamente, esta função não deve ser chamada, mas

124
00:05:56,890 --> 00:05:59,360
‫em vez disso, ela deve ficar aqui e esperar

125
00:05:59,360 --> 00:06:01,460
‫até que o expresso a chame.

126
00:06:01,460 --> 00:06:03,310
‫E o Express irá,

127
00:06:03,310 --> 00:06:05,400
‫é claro, chamá-lo assim que alguém

128
00:06:05,400 --> 00:06:08,390
‫atingir a rota que precisa dessa função de controle.

129
00:06:08,390 --> 00:06:11,980
‫E então a solução para isso é basicamente fazer com

130
00:06:11,980 --> 00:06:15,030
‫que a função catchAsync retorne outra função que

131
00:06:15,030 --> 00:06:18,060
‫será atribuída a createTour e para que essa

132
00:06:18,060 --> 00:06:19,640
‫função possa ser

133
00:06:19,640 --> 00:06:21,483
‫chamada posteriormente quando necessário.

134
00:06:23,294 --> 00:06:24,394
‫Então vamos fazer isso aqui.

135
00:06:25,590 --> 00:06:28,480
‫Vamos retornar uma função anônima e lembrar

136
00:06:28,480 --> 00:06:30,890
‫que essa é a função

137
00:06:30,890 --> 00:06:32,900
‫que express irá chamar.

138
00:06:32,900 --> 00:06:35,380
‫E aqui é onde especificamos

139
00:06:35,380 --> 00:06:38,423
‫a solicitação, a resposta e a próxima.

140
00:06:41,120 --> 00:06:43,763
‫Na verdade, faltando a seta aqui.

141
00:06:47,230 --> 00:06:48,480
‫E tudo bem.

142
00:06:48,480 --> 00:06:49,890
‫E é isso mesmo.

143
00:06:49,890 --> 00:06:52,420
‫Essa é a nossa função catchAsync.

144
00:06:52,420 --> 00:06:54,610
‫Basta lembrar que eu disse

145
00:06:54,610 --> 00:06:56,840
‫que poderíamos simplificá-lo e isso porque,

146
00:06:56,840 --> 00:06:59,110
‫em JavaScript, podemos simplificá-lo assim, então

147
00:06:59,110 --> 00:07:01,777
‫tudo o que precisamos passar aqui é

148
00:07:01,777 --> 00:07:04,020
‫a função, e ela será chamada

149
00:07:04,020 --> 00:07:06,810
‫automaticamente com o parâmetro que este callback recebe.

150
00:07:06,810 --> 00:07:09,263
‫Portanto, é o mesmo que escrever a seguir.

151
00:07:11,500 --> 00:07:13,290
‫Então, vamos recapitular aqui.

152
00:07:13,290 --> 00:07:16,490
‫Portanto, para eliminar nossos blocos try catch,

153
00:07:16,490 --> 00:07:19,230
‫simplesmente envolvemos nossa função assíncrona

154
00:07:19,230 --> 00:07:23,010
‫dentro da função catchAsync que acabamos de criar.

155
00:07:23,010 --> 00:07:26,160
‫Essa função retornará uma nova função

156
00:07:26,160 --> 00:07:27,690
‫anônima, que

157
00:07:27,690 --> 00:07:31,660
‫é esta aqui, que será atribuída a createTour.

158
00:07:31,660 --> 00:07:34,200
‫E então, basicamente, é esta função

159
00:07:34,200 --> 00:07:36,940
‫aqui que será chamada assim que um

160
00:07:36,940 --> 00:07:40,010
‫novo tour for criado usando o manipulador createTour.

161
00:07:40,010 --> 00:07:42,960
‫E é por isso que ela tem exatamente

162
00:07:42,960 --> 00:07:47,520
‫a mesma assinatura aqui que esta função assíncrona, com solicitação, resposta e próximo.

163
00:07:47,520 --> 00:07:49,740
‫Agora, o que esta função aqui

164
00:07:49,740 --> 00:07:51,320
‫fará é chamar a

165
00:07:51,320 --> 00:07:53,440
‫função que passamos inicialmente, esta

166
00:07:53,440 --> 00:07:54,990
‫aqui, e

167
00:07:54,990 --> 00:07:58,270
‫então executará todo o código que está lá.

168
00:07:58,270 --> 00:08:00,670
‫Agora, por se tratar de uma

169
00:08:00,670 --> 00:08:02,380
‫função assíncrona aqui, ela

170
00:08:02,380 --> 00:08:05,610
‫retornará uma promessa e, portanto, caso haja um erro

171
00:08:05,610 --> 00:08:08,400
‫nesta promessa ou em outras palavras, caso seja

172
00:08:08,400 --> 00:08:11,090
‫rejeitada, podemos pegar o erro que aconteceu

173
00:08:11,090 --> 00:08:15,193
‫usando o método catch que é disponível em todas as promessas.

174
00:08:16,560 --> 00:08:19,510
‫E no final, é este método catch que

175
00:08:19,510 --> 00:08:22,670
‫vai passar o erro para a próxima função que

176
00:08:22,670 --> 00:08:24,780
‫fará com que nosso erro

177
00:08:24,780 --> 00:08:27,943
‫termine em nosso middleware de tratamento de erros global.

178
00:08:28,890 --> 00:08:31,020
‫Então é aqui, nessa linha de código,

179
00:08:31,020 --> 00:08:33,510
‫que é realmente onde toda a mágica acontece,

180
00:08:33,510 --> 00:08:35,440
‫e é isso, de fato,

181
00:08:35,440 --> 00:08:38,893
‫o que nos permite livrar-nos do bloco catch que tínhamos anteriormente.

182
00:08:39,770 --> 00:08:40,603
‫E

183
00:08:40,603 --> 00:08:43,710
‫uma nota: isso é bastante complicado de entender

184
00:08:43,710 --> 00:08:46,460
‫e caso não esteja 100% claro, não

185
00:08:46,460 --> 00:08:48,943
‫se preocupe, não é tão importante.

186
00:08:49,792 --> 00:08:53,010
‫Na verdade, trata-se apenas de descobrir como

187
00:08:53,010 --> 00:08:56,460
‫o código assíncrono funciona exatamente nos bastidores em JavaScript.

188
00:08:56,460 --> 00:09:00,100
‫Portanto, não se trata tanto de Express ou Node. js, trata-se

189
00:09:00,100 --> 00:09:04,060
‫mais de como o código assíncrono funciona.

190
00:09:04,060 --> 00:09:06,560
‫De qualquer forma, se agora criarmos um

191
00:09:06,560 --> 00:09:08,040
‫novo tour e

192
00:09:08,040 --> 00:09:10,440
‫algum erro acontecer, por exemplo, de

193
00:09:10,440 --> 00:09:13,450
‫uma entrada inválida, então esse erro deve ser

194
00:09:13,450 --> 00:09:15,120
‫capturado aqui nesta função

195
00:09:15,120 --> 00:09:18,270
‫catch, e então será propagado para nosso middleware de

196
00:09:18,270 --> 00:09:21,870
‫tratamento de erros e para que um enviará de volta

197
00:09:21,870 --> 00:09:24,570
‫a resposta de erro que esperamos receber.

198
00:09:24,570 --> 00:09:26,973
‫E agora vamos realmente tentar isso.

199
00:09:28,080 --> 00:09:30,500
‫Portanto, crie um novo tour.

200
00:09:30,500 --> 00:09:32,030
‫Aqui temos o corpo

201
00:09:32,030 --> 00:09:35,223
‫e agora vamos nos livrar de um desses campos obrigatórios.

202
00:09:36,440 --> 00:09:37,273
‫Tudo bem.

203
00:09:37,273 --> 00:09:40,223
‫Isso deve causar um erro, e vamos ver.

204
00:09:41,220 --> 00:09:44,920
‫E, de fato, nossa validação de tour falhou, que

205
00:09:44,920 --> 00:09:46,910
‫é exatamente a mensagem

206
00:09:46,910 --> 00:09:49,090
‫de erro que deveríamos receber.

207
00:09:49,090 --> 00:09:53,220
‫Agora aqui, você vê este 500 Erro Interno do Servidor, que é simplesmente

208
00:09:53,220 --> 00:09:55,710
‫devido ao fato de que agora o

209
00:09:55,710 --> 00:09:57,500
‫erro que foi propagado para o

210
00:09:57,500 --> 00:09:59,280
‫middleware de tratamento de

211
00:09:59,280 --> 00:10:02,110
‫erros não tinha nenhum código de status especificado

212
00:10:02,110 --> 00:10:05,190
‫e, portanto, lembre-se de que nosso padrão é 500

213
00:10:05,190 --> 00:10:08,310
‫e esse é o que foi então enviado de volta.

214
00:10:08,310 --> 00:10:10,060
‫E, claro, precisamos consertar isso

215
00:10:10,060 --> 00:10:13,173
‫e faremos isso em uma aula posterior neste curso.

216
00:10:14,730 --> 00:10:17,030
‫Por enquanto, o que importa aqui

217
00:10:17,030 --> 00:10:20,420
‫é que, primeiro, nossa função catchAsync funciona exatamente como pretendido

218
00:10:20,420 --> 00:10:23,700
‫e, segundo, que o erro foi realmente propagado, portanto,

219
00:10:23,700 --> 00:10:26,900
‫foi detectado por nosso middleware de tratamento de erros

220
00:10:26,900 --> 00:10:30,223
‫global, que então enviou essa resposta de volta ao cliente.

221
00:10:32,520 --> 00:10:35,360
‫Agora, vamos realmente exportar essa função

222
00:10:35,360 --> 00:10:38,010
‫catch para seu próprio arquivo.

223
00:10:38,010 --> 00:10:39,950
‫Então, estou pegando aqui e

224
00:10:39,950 --> 00:10:42,200
‫vou criar apenas outro arquivo em

225
00:10:42,200 --> 00:10:43,843
‫nossa pasta de utilitários.

226
00:10:47,060 --> 00:10:51,123
‫Então, catchAsync. js.

227
00:10:55,470 --> 00:11:00,470
‫E até aqui, módulo. as exportações devem ser apenas isso.

228
00:11:04,650 --> 00:11:09,450
‫E isso deve funcionar bem.

229
00:11:09,450 --> 00:11:11,340
‫De volta ao nosso tour controller,

230
00:11:11,340 --> 00:11:13,373
‫é claro que agora precisamos importar esta função.

231
00:11:18,970 --> 00:11:21,840
‫E como de costume, precisamos subir uma pasta

232
00:11:22,840 --> 00:11:25,690
‫e, em seguida, em nossa pasta de

233
00:11:25,690 --> 00:11:27,733
‫utilitários e, em seguida, catchAsync.

234
00:11:30,810 --> 00:11:32,840
‫Tudo bem, e agora

235
00:11:32,840 --> 00:11:36,080
‫tudo o que precisamos fazer é nos livrar

236
00:11:36,080 --> 00:11:40,593
‫de todos esses blocos catch e envolver todos os manipuladores no catchAsync.

237
00:11:42,210 --> 00:11:43,793
‫Então vamos fazer isso.

238
00:11:47,610 --> 00:11:52,610
‫Primeiro faça o embrulho e depois livre-se desses blocos.

239
00:11:57,030 --> 00:12:00,220
‫Salve para reformatar e aqui vamos nós.

240
00:12:00,220 --> 00:12:03,310
‫E agora é simplesmente um processo de

241
00:12:03,310 --> 00:12:06,821
‫repetir isso até todos os passeios, ou, desculpe, até

242
00:12:06,821 --> 00:12:09,633
‫que todos os manipuladores tenham terminado.

243
00:12:13,070 --> 00:12:14,760
‫Ok, salvamento rápido.

244
00:12:14,760 --> 00:12:16,740
‫Este já está feito.

245
00:12:16,740 --> 00:12:18,763
‫O próximo passo é a atualização.

246
00:12:26,920 --> 00:12:28,483
‫E apenas mais um faltando.

247
00:12:36,380 --> 00:12:37,870
‫Ou, na verdade, isso não é verdade.

248
00:12:37,870 --> 00:12:40,403
‫Lá embaixo, temos ainda mais funções assíncronas.

249
00:12:52,530 --> 00:12:57,203
‫Portanto, vamos nos livrar do problema e tentar aqui.

250
00:12:59,150 --> 00:13:01,100
‫E acredito que este seja o último.

251
00:13:04,020 --> 00:13:05,483
‫E sim, realmente é.

252
00:13:12,390 --> 00:13:15,000
‫Tudo bem, agora outra coisa que

253
00:13:15,000 --> 00:13:19,040
‫precisamos fazer é adicionar o próximo a todos eles aqui também.

254
00:13:19,040 --> 00:13:20,793
‫Mas, claro, não em maiúsculas.

255
00:13:21,690 --> 00:13:22,960
‫OK.

256
00:13:22,960 --> 00:13:25,480
‫E deixe-me selecionar todos eles aqui para que

257
00:13:28,170 --> 00:13:30,683
‫eu tenha que escrever apenas uma vez.

258
00:13:33,140 --> 00:13:35,943
‫E isso adicionou a todos eles.

259
00:13:38,390 --> 00:13:42,063
‫E agora acho que terminamos com essa parte.

260
00:13:43,270 --> 00:13:46,310
‫Vamos testá-lo rapidamente de novo, não com

261
00:13:46,310 --> 00:13:48,733
‫este, mas aqui, não com

262
00:13:49,950 --> 00:13:52,000
‫este também, então terminamos.

263
00:13:55,330 --> 00:13:57,140
‫E vou tentar fazer

264
00:13:57,140 --> 00:14:01,870
‫um tour, mas com uma identificação inválida, então vamos ver o que acontece aqui.

265
00:14:01,870 --> 00:14:04,250
‫E, de fato, recebemos nossa mensagem de

266
00:14:04,250 --> 00:14:06,950
‫erro e novamente com o código de

267
00:14:06,950 --> 00:14:08,640
‫status 500, que não

268
00:14:08,640 --> 00:14:10,050
‫está correto, lembre-se,

269
00:14:10,050 --> 00:14:11,930
‫mas cuidaremos disso mais tarde.

270
00:14:11,930 --> 00:14:15,130
‫Então, agora, deixe-me mostrar que é daqui

271
00:14:15,130 --> 00:14:19,920
‫que vem o 500, porque agora não há código de status

272
00:14:19,920 --> 00:14:22,200
‫dentro do erro que recebemos

273
00:14:22,200 --> 00:14:24,310
‫porque esses erros, na

274
00:14:24,310 --> 00:14:27,940
‫verdade, vêm do Mongoose e, portanto, não temos

275
00:14:27,940 --> 00:14:29,730
‫como adicionar

276
00:14:29,730 --> 00:14:32,390
‫um status código para esses erros.

277
00:14:32,390 --> 00:14:35,370
‫Ou, na verdade, é claro, poderíamos fazer isso,

278
00:14:35,370 --> 00:14:37,950
‫mas ficaria ainda mais confuso e,

279
00:14:37,950 --> 00:14:40,330
‫portanto, encontraremos outra maneira mais tarde

280
00:14:40,330 --> 00:14:41,443
‫nesta seção.

281
00:14:42,510 --> 00:14:45,840
‫Por enquanto, estou muito feliz com o resultado que temos

282
00:14:45,840 --> 00:14:48,773
‫aqui e isso é tudo para essa palestra.

