﻿1
00:00:01,120 --> 00:00:02,420
‫Instrutor: Neste vídeo, vamos

2
00:00:02,420 --> 00:00:06,120
‫aprender sobre como depurar o Node. JS porque, vamos enfrentá-lo, sempre

3
00:00:06,120 --> 00:00:09,240
‫haverá alguns bugs em nosso código, não importa

4
00:00:09,240 --> 00:00:11,040
‫o quão cuidadosos sejamos.

5
00:00:11,040 --> 00:00:13,910
‫E por isso é bom ter uma ferramenta para nos

6
00:00:13,910 --> 00:00:15,740
‫ajudar a depurar nosso código.

7
00:00:15,740 --> 00:00:18,870
‫Bem, não se trata realmente de tratamento de erros com o

8
00:00:18,870 --> 00:00:21,200
‫Express, mas achei que esse era um bom

9
00:00:21,200 --> 00:00:23,510
‫ponto do curso para apresentar a você

10
00:00:23,510 --> 00:00:26,423
‫uma ferramenta de depuração que poderíamos usar no restante do curso.

11
00:00:27,920 --> 00:00:31,270
‫E existem diferentes maneiras de depurar o Node. Código JS.

12
00:00:31,270 --> 00:00:33,740
‫Por exemplo, podemos usar o código VS para isso.

13
00:00:33,740 --> 00:00:38,190
‫Mas, na verdade, o Google lançou recentemente uma ferramenta

14
00:00:38,190 --> 00:00:42,840
‫incrível que podemos usar para depurar que se chama NDB, certo?

15
00:00:42,840 --> 00:00:46,610
‫Então, vamos passar para o nosso outro terminal aqui

16
00:00:46,610 --> 00:00:48,850
‫e depois instalar o NDB.

17
00:00:48,850 --> 00:00:51,720
‫E NDB, que significa Node debugger, é na

18
00:00:51,720 --> 00:00:53,823
‫verdade apenas um pacote NPM.

19
00:00:54,780 --> 00:00:56,927
‫Portanto, o NPM instala o NDB.

20
00:00:58,440 --> 00:01:00,250
‫Tudo bem, e

21
00:01:00,250 --> 00:01:04,120
‫você deve então instalá-lo como um pacote global, certo?

22
00:01:04,120 --> 00:01:07,563
‫E se você estiver em um Mac, pode precisar de permissões globais.

23
00:01:08,440 --> 00:01:10,890
‫Então, basta escrever sudo aqui na frente.

24
00:01:10,890 --> 00:01:14,720
‫Ou se você não for capaz de instalá-lo globalmente,

25
00:01:14,720 --> 00:01:17,610
‫pode apenas instalá-lo localmente como uma

26
00:01:17,610 --> 00:01:19,003
‫dependência mortal.

27
00:01:20,040 --> 00:01:22,420
‫Então, assim, certo?

28
00:01:22,420 --> 00:01:25,000
‫De qualquer forma, vá em frente e instale esta ferramenta agora.

29
00:01:25,000 --> 00:01:25,870
‫Não vou

30
00:01:25,870 --> 00:01:28,590
‫fazer isso porque pode ser um download bem pesado

31
00:01:28,590 --> 00:01:30,630
‫e isso está demorando muito agora.

32
00:01:30,630 --> 00:01:33,720
‫De qualquer forma, assim que você tiver a ferramenta instalada, vamos

33
00:01:33,720 --> 00:01:36,130
‫direto ao pacote. Jason e

34
00:01:36,130 --> 00:01:39,710
‫adicione um novo script aqui, certo?

35
00:01:39,710 --> 00:01:42,173
‫E vou chamá-lo de depuração.

36
00:01:43,770 --> 00:01:44,900
‫OK?

37
00:01:44,900 --> 00:01:47,270
‫E então o comando que queremos

38
00:01:47,270 --> 00:01:50,890
‫executar aqui é simplesmente NDB, então o depurador de

39
00:01:50,890 --> 00:01:53,250
‫notas e, novamente, nosso ponto de

40
00:01:53,250 --> 00:01:57,103
‫entrada, então, servidor. js ok?

41
00:01:57,103 --> 00:01:59,200
‫E agora isso vai funcionar, não importa

42
00:01:59,200 --> 00:02:01,320
‫se você instalou o NDB local ou globalmente.

43
00:02:01,320 --> 00:02:03,537
‫Tudo bem, vamos agora executar o script.

44
00:02:03,537 --> 00:02:05,260
‫E para que isso

45
00:02:05,260 --> 00:02:07,690
‫funcione, na verdade precisamos terminar este processo

46
00:02:07,690 --> 00:02:09,460
‫porque ele basicamente irá iniciar

47
00:02:09,460 --> 00:02:12,210
‫o servidor também e então ele tentará fazê-lo

48
00:02:12,210 --> 00:02:14,120
‫na mesma porta e é

49
00:02:14,120 --> 00:02:15,980
‫claro que não vai funcionar.

50
00:02:15,980 --> 00:02:18,450
‫Portanto, precisamos terminar o que está em execução

51
00:02:18,450 --> 00:02:21,670
‫no momento e, a partir daqui, podemos executar o NPM, executar

52
00:02:21,670 --> 00:02:22,503
‫a depuração.

53
00:02:23,690 --> 00:02:24,523
‫Tudo bem,

54
00:02:24,523 --> 00:02:26,370
‫e agora uma nova janela do

55
00:02:26,370 --> 00:02:28,230
‫Chrome deve ser aberta, o que

56
00:02:29,070 --> 00:02:31,220
‫é chamado de Chrome sem cabeça, mas

57
00:02:31,220 --> 00:02:32,690
‫não é um Chrome real.

58
00:02:32,690 --> 00:02:34,890
‫Você verá o ícone do Chrome aqui embaixo

59
00:02:34,890 --> 00:02:36,550
‫e também aqui na barra de

60
00:02:36,550 --> 00:02:39,410
‫menus, mas na verdade este é apenas o depurador de notas.

61
00:02:39,410 --> 00:02:41,260
‫Então, o que temos aqui?

62
00:02:41,260 --> 00:02:45,030
‫Bem, do lado esquerdo, temos nosso sistema de arquivos completo.

63
00:02:45,030 --> 00:02:48,010
‫Também temos acesso aos nossos scripts NPM aqui,

64
00:02:48,010 --> 00:02:50,810
‫que podem ser executados a partir daqui.

65
00:02:50,810 --> 00:02:52,910
‫Também temos um console e aqui temos

66
00:02:52,910 --> 00:02:55,610
‫nossas saídas usuais com o aplicativo em execução e

67
00:02:55,610 --> 00:02:57,310
‫a conexão do banco

68
00:02:58,570 --> 00:03:01,330
‫de dados e também temos as guias de desempenho

69
00:03:01,330 --> 00:03:03,090
‫e memória, que não vamos usar.

70
00:03:03,090 --> 00:03:05,170
‫Certo, agora se você está familiarizado

71
00:03:05,170 --> 00:03:07,130
‫com o processo de depuração

72
00:03:07,130 --> 00:03:10,100
‫geral, então tudo isso será bem familiar para você.

73
00:03:10,100 --> 00:03:12,260
‫Tudo bem, mas se não, não se

74
00:03:12,260 --> 00:03:13,810
‫preocupe, vou mostrar algumas técnicas

75
00:03:13,810 --> 00:03:15,240
‫ao longo deste vídeo.

76
00:03:15,240 --> 00:03:19,560
‫Certo, de qualquer maneira, vamos abrir nosso servidor. js.

77
00:03:19,560 --> 00:03:21,460
‫E uma coisa que é

78
00:03:21,460 --> 00:03:24,500
‫realmente incrível é que podemos editar nossos arquivos

79
00:03:24,500 --> 00:03:26,040
‫aqui, bem neste depurador.

80
00:03:26,040 --> 00:03:28,530
‫Então, por exemplo, digamos que encontramos um

81
00:03:28,530 --> 00:03:30,820
‫bug e queremos consertá-lo imediatamente.

82
00:03:30,820 --> 00:03:33,340
‫Podemos fazer isso aqui mesmo no depurador

83
00:03:33,340 --> 00:03:35,790
‫e ele atualizará o código original.

84
00:03:35,790 --> 00:03:37,020
‫Então, apenas para

85
00:03:37,020 --> 00:03:38,943
‫testar, vamos adicionar um comentário aqui.

86
00:03:40,050 --> 00:03:44,460
‫Então, teste e aperte command ou control s para salvar e então quando

87
00:03:44,460 --> 00:03:46,570
‫voltarmos ao nosso código e abrirmos

88
00:03:47,830 --> 00:03:49,800
‫o servidor. js aí

89
00:03:49,800 --> 00:03:53,060
‫você vai ver que o comentário está mesmo aqui.

90
00:03:53,060 --> 00:03:53,950
‫OK?

91
00:03:53,950 --> 00:03:55,810
‫E se agora o

92
00:03:55,810 --> 00:03:57,370
‫excluirmos daqui, salve-o

93
00:03:57,370 --> 00:03:59,220
‫e volte para o

94
00:03:59,220 --> 00:04:02,300
‫depurador, então ele irá embora daqui também.

95
00:04:02,300 --> 00:04:04,810
‫Ok, mas agora sobre a própria depuração.

96
00:04:04,810 --> 00:04:06,860
‫Eu diria que o aspecto

97
00:04:06,860 --> 00:04:09,740
‫fundamental da depuração é definir pontos de interrupção.

98
00:04:09,740 --> 00:04:12,420
‫Portanto, os pontos de interrupção são basicamente pontos em nosso

99
00:04:12,420 --> 00:04:14,540
‫código que podemos definir aqui no

100
00:04:14,540 --> 00:04:16,810
‫depurador, onde nosso código parará de ser executado.

101
00:04:16,810 --> 00:04:18,810
‫Basicamente, ele congelará no tempo e

102
00:04:18,810 --> 00:04:21,900
‫podemos então dar uma olhada em todas as nossas variáveis.

103
00:04:21,900 --> 00:04:24,530
‫Ok, então isso será extremamente útil para

104
00:04:24,530 --> 00:04:26,270
‫encontrar alguns bugs.

105
00:04:26,270 --> 00:04:28,340
‫Agora, agora não há nenhum bug

106
00:04:28,340 --> 00:04:30,860
‫aqui, mas ainda vamos adicionar um ponto de interrupção.

107
00:04:30,860 --> 00:04:34,850
‫E vou adicionar esse ponto de interrupção aqui na linha 21.

108
00:04:34,850 --> 00:04:36,610
‫Então eu clico aqui nesta

109
00:04:36,610 --> 00:04:38,920
‫linha e você vê esse marcador verde, ok?

110
00:04:38,920 --> 00:04:41,600
‫E isso significa que o código irá parar

111
00:04:41,600 --> 00:04:43,950
‫neste ponto quando o executarmos, certo?

112
00:04:43,950 --> 00:04:45,750
‫E você também pode ver

113
00:04:45,750 --> 00:04:48,850
‫isso aqui no lado direito da guia dos pontos de interrupção.

114
00:04:48,850 --> 00:04:50,680
‫Agora, nosso aplicativo já está

115
00:04:50,680 --> 00:04:52,360
‫em execução neste

116
00:04:52,360 --> 00:04:55,350
‫ponto e basicamente aguardando a chegada de solicitações.

117
00:04:55,350 --> 00:04:56,830
‫E então o que precisamos

118
00:04:56,830 --> 00:05:00,810
‫fazer aqui é clicar com o botão direito e clicar em executar este script.

119
00:05:00,810 --> 00:05:02,670
‫Ok, então basicamente executará o

120
00:05:02,670 --> 00:05:04,153
‫script aqui novamente.

121
00:05:05,638 --> 00:05:06,720
‫Tudo bem?

122
00:05:06,720 --> 00:05:08,390
‫E aqui vamos nós.

123
00:05:08,390 --> 00:05:10,380
‫Então você vê aqui no lado

124
00:05:10,380 --> 00:05:12,940
‫direito, que diz pausado no ponto de interrupção

125
00:05:12,940 --> 00:05:16,040
‫e todo o código que está acima deste ponto de

126
00:05:16,040 --> 00:05:18,330
‫interrupção aqui já foi executado neste ponto.

127
00:05:18,330 --> 00:05:21,390
‫E agora podemos dar uma olhada nas variáveis.

128
00:05:21,390 --> 00:05:24,230
‫Por exemplo, podemos passar o mouse sobre essa variável

129
00:05:24,230 --> 00:05:27,220
‫de porta e ver que ela está definida como 3.000.

130
00:05:27,220 --> 00:05:29,670
‫E também acerte este lugar aqui

131
00:05:29,670 --> 00:05:31,560
‫no código aqui, certo.

132
00:05:31,560 --> 00:05:33,830
‫E então a terceira maneira de ver isso

133
00:05:33,830 --> 00:05:35,380
‫está aqui do lado direito.

134
00:05:35,380 --> 00:05:38,280
‫Portanto, temos basicamente algumas guias aqui, para processos de

135
00:05:38,280 --> 00:05:40,940
‫nó, o relógio, a pilha de chamadas, o que

136
00:05:40,940 --> 00:05:43,240
‫não é realmente importante por enquanto.

137
00:05:43,240 --> 00:05:46,940
‫O escopo, e então o escopo é onde todas

138
00:05:46,940 --> 00:05:49,050
‫as nossas variáveis estão, certo?

139
00:05:49,050 --> 00:05:52,530
‫E aqui novamente, você tem a porta definida para 3.000.

140
00:05:52,530 --> 00:05:54,620
‫Ok, e aqui você também pode

141
00:05:54,620 --> 00:05:57,010
‫ver as cinco variáveis às quais temos acesso

142
00:05:57,010 --> 00:05:58,490
‫em todos os módulos.

143
00:05:58,490 --> 00:06:01,290
‫Lembra da aula de modelos?

144
00:06:01,290 --> 00:06:03,590
‫Portanto, temos o nome do

145
00:06:03,590 --> 00:06:07,250
‫diretório, temos o nome do arquivo, temos a função require,

146
00:06:07,250 --> 00:06:10,150
‫temos o módulo e temos a exportação.

147
00:06:10,150 --> 00:06:12,690
‫Portanto, lembre-se de que essas são

148
00:06:12,690 --> 00:06:15,400
‫as cinco variáveis disponíveis em cada módulo.

149
00:06:15,400 --> 00:06:17,960
‫E, na verdade, quando executamos um

150
00:06:17,960 --> 00:06:21,730
‫código como este no depurador, podemos ver que todo o nosso

151
00:06:21,730 --> 00:06:24,383
‫código está de fato envolvido nesta função.

152
00:06:25,390 --> 00:06:26,560
‫Direito?

153
00:06:26,560 --> 00:06:28,810
‫Portanto, esta função de invólucro que

154
00:06:28,810 --> 00:06:31,230
‫nos dá acesso a essas cinco variáveis.

155
00:06:31,230 --> 00:06:34,710
‫Tudo bem, a seguir também quero dar uma olhada

156
00:06:34,710 --> 00:06:38,013
‫em nossa variável de aplicativo, basicamente, o aplicativo

157
00:06:38,013 --> 00:06:42,330
‫Express que exportamos do aplicativo. js, lembre-se disso.

158
00:06:42,330 --> 00:06:44,870
‫E aqui está realmente um monte de

159
00:06:44,870 --> 00:06:47,330
‫coisas, mas o que acho

160
00:06:47,330 --> 00:06:50,393
‫interessante é dar uma olhada neste roteador aqui.

161
00:06:51,660 --> 00:06:54,763
‫Ok, então no roteador temos pilha.

162
00:06:56,680 --> 00:06:59,100
‫Ok, vamos abrir isso um pouco e

163
00:07:00,240 --> 00:07:02,070
‫essa pilha aqui é

164
00:07:02,070 --> 00:07:05,420
‫basicamente a pilha de middleware que temos em nosso aplicativo.

165
00:07:05,420 --> 00:07:09,010
‫Ok, por exemplo, temos nosso jsonParser aqui,

166
00:07:09,010 --> 00:07:13,030
‫temos o código que serve os arquivos estáticos.

167
00:07:13,030 --> 00:07:16,760
‫Dê uma olhada nisso aqui no aplicativo. js então esta

168
00:07:16,760 --> 00:07:19,170
‫expresso. estático.

169
00:07:19,170 --> 00:07:21,380
‫Também temos o logger

170
00:07:21,380 --> 00:07:23,910
‫aqui, que vem do Morgan.

171
00:07:23,910 --> 00:07:26,310
‫Então você tem essas duas próximas funções

172
00:07:26,310 --> 00:07:27,480
‫de middleware,

173
00:07:27,480 --> 00:07:31,590
‫então essas duas aqui, que são anônimas, então essa e essa e

174
00:07:31,590 --> 00:07:33,740
‫talvez possamos dar uma olhada nelas.

175
00:07:33,740 --> 00:07:35,803
‫Mas não realmente.

176
00:07:36,640 --> 00:07:38,390
‫Ok, isso não importa.

177
00:07:38,390 --> 00:07:40,740
‫Isso é apenas por curiosidade e

178
00:07:40,740 --> 00:07:42,170
‫mostra que podemos

179
00:07:42,170 --> 00:07:45,520
‫dar uma olhada em nossa pilha de middleware, certo?

180
00:07:45,520 --> 00:07:47,603
‫Então, finalmente, temos nossos dois roteadores.

181
00:07:48,795 --> 00:07:49,970
‫OK?

182
00:07:49,970 --> 00:07:53,080
‫Portanto, temos o roteador, e você vê aqui realmente a rota

183
00:07:53,080 --> 00:07:55,160
‫para a qual ele se aplica.

184
00:07:55,160 --> 00:08:00,160
‫Então api / v1 / tours certo e acho isso realmente interessante.

185
00:08:00,980 --> 00:08:03,710
‫Claro que ainda temos os usuários aqui também.

186
00:08:03,710 --> 00:08:07,250
‫E assim, podemos realmente dar uma olhada em como

187
00:08:07,250 --> 00:08:09,823
‫o aplicativo Express funciona nos bastidores.

188
00:08:10,710 --> 00:08:11,543
‫OK?

189
00:08:12,380 --> 00:08:14,623
‫Então, vamos encerrar tudo isso.

190
00:08:16,140 --> 00:08:18,440
‫E a outra coisa que gostaria de

191
00:08:18,440 --> 00:08:20,210
‫mostrar a vocês está aqui

192
00:08:21,120 --> 00:08:24,300
‫nas variáveis globais porque aqui temos a variável de processo ou

193
00:08:25,850 --> 00:08:28,453
‫pelo menos deveríamos tê-la em algum lugar aqui.

194
00:08:30,700 --> 00:08:32,910
‫Sim, então aqui está.

195
00:08:32,910 --> 00:08:35,140
‫Portanto, aqui temos a variável de processo

196
00:08:35,140 --> 00:08:37,400
‫que deve ser lembrada, disponível em todos os lugares.

197
00:08:37,400 --> 00:08:41,070
‫E é por isso que é chamado aqui de variável global.

198
00:08:41,070 --> 00:08:43,310
‫Então aí temos o processo. env e

199
00:08:44,300 --> 00:08:46,030
‫lembrar que é aqui que

200
00:08:46,030 --> 00:08:49,250
‫todas as nossas variáveis de ambiente são armazenadas.

201
00:08:49,250 --> 00:08:52,180
‫E, de fato, aqui temos nossa string de banco

202
00:08:52,180 --> 00:08:55,340
‫de dados, temos o banco de dados local, a senha e,

203
00:08:55,340 --> 00:08:57,910
‫na verdade, todas as outras variáveis de ambiente

204
00:08:57,910 --> 00:09:01,333
‫que definimos em nossa configuração. n arquivo.

205
00:09:02,630 --> 00:09:03,740
‫Tudo bem?

206
00:09:03,740 --> 00:09:07,070
‫Coisas muito interessantes que podemos dar uma olhada aqui.

207
00:09:07,070 --> 00:09:10,260
‫Mas agora vamos continuar com nossa depuração.

208
00:09:10,260 --> 00:09:11,093
‫OK?

209
00:09:11,093 --> 00:09:13,540
‫Então, paramos o código, o congelamos

210
00:09:13,540 --> 00:09:16,630
‫no tempo aqui neste ponto, portanto, na linha 21.

211
00:09:16,630 --> 00:09:19,720
‫Ok, agora podemos clicar aqui neste botão, a fim

212
00:09:19,720 --> 00:09:22,400
‫de realmente continuar executando o código.

213
00:09:22,400 --> 00:09:24,210
‫E como não temos mais

214
00:09:24,210 --> 00:09:26,070
‫pontos de interrupção, o código não

215
00:09:26,070 --> 00:09:28,500
‫será mais interrompido e basicamente terminará a execução.

216
00:09:28,500 --> 00:09:29,980
‫Então vamos fazer isso.

217
00:09:29,980 --> 00:09:32,910
‫E agora nosso aplicativo está realmente em execução.

218
00:09:32,910 --> 00:09:33,830
‫Vamos dar uma olhada nisso.

219
00:09:33,830 --> 00:09:36,600
‫No console, ok?

220
00:09:36,600 --> 00:09:38,720
‫Portanto, o aplicativo está sendo executado na porta 3.000 e a

221
00:09:38,720 --> 00:09:40,793
‫conexão com o banco de dados foi bem-sucedida, é claro.

222
00:09:43,550 --> 00:09:44,793
‫O que aconteceu aqui?

223
00:09:46,120 --> 00:09:47,350
‫Agora, tudo bem,

224
00:09:47,350 --> 00:09:50,163
‫então vamos rapidamente fazer uma solicitação aqui.

225
00:09:51,580 --> 00:09:53,650
‫Então, basta um para / tours e

226
00:09:55,532 --> 00:09:57,100
‫agora temos todo esse

227
00:09:57,100 --> 00:09:59,683
‫lixo aqui e vou cuidar disso em um segundo.

228
00:10:01,050 --> 00:10:04,110
‫Tudo bem, e se você voltar ao nosso console

229
00:10:04,110 --> 00:10:07,670
‫aqui, então é claro que temos todo o código que tínhamos antes.

230
00:10:07,670 --> 00:10:09,220
‫Olá do middleware

231
00:10:09,220 --> 00:10:12,120
‫e como a consulta demorou realmente.

232
00:10:12,120 --> 00:10:14,890
‫Tudo bem, e agora, antes de fazermos

233
00:10:14,890 --> 00:10:17,693
‫qualquer outra coisa, vamos nos livrar dessas viagens inúteis.

234
00:10:19,380 --> 00:10:20,893
‫Vou recarregá-lo aqui e

235
00:10:22,270 --> 00:10:24,720
‫acho que estará em algum lugar aqui no final.

236
00:10:26,720 --> 00:10:29,103
‫Então, teste tudo aqui.

237
00:10:29,980 --> 00:10:31,593
‫Então, vamos nos livrar disso.

238
00:10:32,490 --> 00:10:35,573
‫Esta é a turnê secreta e eu realmente quero mantê-la aqui.

239
00:10:37,480 --> 00:10:40,413
‫Mas tudo daqui em diante não queremos mais.

240
00:10:44,720 --> 00:10:45,830
‫E então

241
00:10:48,150 --> 00:10:51,490
‫sim, agora estamos de volta a ter apenas

242
00:10:51,490 --> 00:10:53,480
‫10 turnês, como antes.

243
00:10:53,480 --> 00:10:55,860
‫De qualquer forma, vamos agora definir um ponto de

244
00:10:55,860 --> 00:10:58,203
‫interrupção na função que trata esta rota.

245
00:10:59,060 --> 00:11:02,150
‫Ok, então chegamos à nossa pasta de controladores e

246
00:11:02,150 --> 00:11:04,540
‫aí temos o controlador de tour.

247
00:11:04,540 --> 00:11:05,373
‫OK?

248
00:11:05,373 --> 00:11:08,200
‫E a função de manipulador é obter todos os tours.

249
00:11:08,200 --> 00:11:09,760
‫Portanto, por enquanto, tudo

250
00:11:09,760 --> 00:11:11,960
‫que eu queria fazer é apenas definir um

251
00:11:11,960 --> 00:11:15,010
‫ponto de interrupção aqui para que possamos dar uma olhada na

252
00:11:15,010 --> 00:11:17,710
‫aparência dessas variáveis depois que a consulta já estiver concluída.

253
00:11:17,710 --> 00:11:20,430
‫Portanto, este código aqui obterá nossos tours e,

254
00:11:20,430 --> 00:11:21,900
‫em seguida, pararemos

255
00:11:21,900 --> 00:11:25,210
‫o código basicamente antes de enviá-lo como uma resposta.

256
00:11:25,210 --> 00:11:29,790
‫Ok, então tudo o que precisamos fazer é realmente fazer a

257
00:11:29,790 --> 00:11:32,730
‫solicitação, porque isso acionará essa função.

258
00:11:32,730 --> 00:11:33,600
‫Direito?

259
00:11:33,600 --> 00:11:36,550
‫E assim, como temos um ponto de interrupção, voltamos

260
00:11:36,550 --> 00:11:39,440
‫automaticamente para esta janela aqui e para o ponto

261
00:11:39,440 --> 00:11:41,270
‫onde o código foi interrompido.

262
00:11:41,270 --> 00:11:43,713
‫Então, que tipo de variáveis temos aqui?

263
00:11:44,830 --> 00:11:47,690
‫Então você vê que temos a solicitação e uma

264
00:11:47,690 --> 00:11:49,630
‫resposta, e também a variável

265
00:11:49,630 --> 00:11:51,670
‫features, e os passeios, é claro.

266
00:11:51,670 --> 00:11:53,770
‫Portanto, vamos primeiro dar uma olhada na solicitação.

267
00:11:54,740 --> 00:11:57,500
‫E aqui novamente, você vê que realmente temos todos os

268
00:11:57,500 --> 00:11:58,560
‫tipos de coisas.

269
00:11:58,560 --> 00:12:02,470
‫Então temos, baseurl, temos o método, temos por

270
00:12:02,470 --> 00:12:05,150
‫exemplo, request. consulta, que agora está

271
00:12:05,150 --> 00:12:07,280
‫vazia porque não passamos nenhuma string

272
00:12:07,280 --> 00:12:08,560
‫de consulta,

273
00:12:08,560 --> 00:12:11,170
‫mas você vê que realmente já está aqui.

274
00:12:11,170 --> 00:12:13,730
‫Ok, então você começa a ver agora

275
00:12:13,730 --> 00:12:16,810
‫como isso pode ser útil para depurar nosso código.

276
00:12:16,810 --> 00:12:20,060
‫Então, basicamente, para congelar nosso código a tempo, em vez de ter

277
00:12:20,060 --> 00:12:23,620
‫que fazer tudo isso no console. logs que costumávamos fazer

278
00:12:23,620 --> 00:12:25,040
‫até este ponto.

279
00:12:25,040 --> 00:12:27,770
‫Normalmente, quando queríamos dar uma olhada na consulta, por exemplo,

280
00:12:27,770 --> 00:12:31,010
‫faríamos um monte de console. logs e use-os para

281
00:12:31,010 --> 00:12:34,590
‫descobrir um bug no caso de algo não

282
00:12:34,590 --> 00:12:35,950
‫estar funcionando.

283
00:12:35,950 --> 00:12:38,150
‫Certo, mas agora temos essa ferramenta incrível que pode nos

284
00:12:38,150 --> 00:12:41,130
‫ajudar a evitar todos esses console. logs por

285
00:12:41,130 --> 00:12:42,460
‫exemplo.

286
00:12:42,460 --> 00:12:44,530
‫Então também temos a resposta, é claro.

287
00:12:44,530 --> 00:12:48,460
‫E novamente você vê todas essas propriedades e métodos que estão lá,

288
00:12:48,460 --> 00:12:50,890
‫e eles não são realmente interessantes para

289
00:12:50,890 --> 00:12:51,990
‫nós agora.

290
00:12:51,990 --> 00:12:54,900
‫O que eu queria mostrar a vocês é claro

291
00:12:54,900 --> 00:12:57,520
‫que neste momento já temos os tours, ok?

292
00:12:57,520 --> 00:13:02,450
‫Portanto, temos nove tours, vamos dar uma olhada neles.

293
00:13:02,450 --> 00:13:06,000
‫E parece meio estranho aqui, então para obter

294
00:13:06,000 --> 00:13:10,480
‫acesso aos valores reais, precisamos clicar aqui, ok, isso é

295
00:13:10,480 --> 00:13:11,880
‫um pouco estranho.

296
00:13:11,880 --> 00:13:14,037
‫Mas funciona, é claro.

297
00:13:14,037 --> 00:13:18,110
‫E então você vê que de fato nossos tours já

298
00:13:18,110 --> 00:13:21,093
‫estão aqui e claro os recursos também.

299
00:13:21,930 --> 00:13:24,650
‫Portanto, você vê aqui que os recursos são uma

300
00:13:24,650 --> 00:13:27,670
‫instância da classe de recursos da API exatamente como a definimos.

301
00:13:27,670 --> 00:13:31,130
‫E aí temos a consulta e a string de consulta.

302
00:13:31,130 --> 00:13:34,660
‫Ótimo, então é assim que examinamos todas as variáveis.

303
00:13:34,660 --> 00:13:37,087
‫E é assim que funcionam as partes

304
00:13:37,087 --> 00:13:38,680
‫mais importantes do depurador.

305
00:13:38,680 --> 00:13:41,750
‫Agora, para aprender um pouco sobre o próprio processo de

306
00:13:41,750 --> 00:13:45,400
‫depuração, vamos introduzir um pequeno bug em nosso código e, em seguida,

307
00:13:45,400 --> 00:13:48,300
‫dar uma olhada em como podemos usar essas ferramentas

308
00:13:48,300 --> 00:13:51,280
‫que temos aqui para basicamente dar uma olhada mais

309
00:13:51,280 --> 00:13:52,790
‫profunda em nosso código.

310
00:13:52,790 --> 00:13:55,410
‫Portanto, não vou retomar a

311
00:13:55,410 --> 00:13:59,850
‫execução ignorada para executar basicamente o restante do código, certo?

312
00:13:59,850 --> 00:14:01,270
‫Portanto, isso deve ser feito agora.

313
00:14:01,270 --> 00:14:03,670
‫Portanto, agora aqui temos todas as respostas.

314
00:14:03,670 --> 00:14:06,320
‫Então você vê que demorou todo esse tempo aqui,

315
00:14:06,320 --> 00:14:08,970
‫então três minutos e 29 segundos, mas isso

316
00:14:08,970 --> 00:14:11,410
‫é só porque nós pausamos a execução por

317
00:14:11,410 --> 00:14:12,313
‫muito tempo.

318
00:14:14,130 --> 00:14:15,130
‫OK.

319
00:14:15,130 --> 00:14:17,793
‫Agora vamos ao nosso código aqui.

320
00:14:19,160 --> 00:14:21,853
‫Vamos fechar o que não precisamos mais.

321
00:14:23,810 --> 00:14:28,410
‫Então, na verdade, em nosso arquivo de recursos da API, quero

322
00:14:28,410 --> 00:14:32,603
‫apresentar um pequeno bug aqui nos campos de limite.

323
00:14:33,570 --> 00:14:36,080
‫Digamos que estivéssemos tentando implementar esse método

324
00:14:36,080 --> 00:14:39,340
‫aqui, mas em vez de unir com um espaço

325
00:14:39,340 --> 00:14:41,790
‫aqui, esquecemos de colocá-lo aqui.

326
00:14:41,790 --> 00:14:45,030
‫E então vamos apenas dizer que nos juntamos

327
00:14:45,030 --> 00:14:49,010
‫sem nenhum espaço, e isso nos daria um resultado estranho, certo?

328
00:14:49,010 --> 00:14:50,633
‫Então, vamos realmente testá-lo.

329
00:14:52,650 --> 00:14:54,480
‫Então, digamos

330
00:14:56,350 --> 00:14:59,690
‫campos e que queríamos apenas

331
00:14:59,690 --> 00:15:04,050
‫o nome e a duração, certo?

332
00:15:04,050 --> 00:15:07,400
‫Agora, antes que eu possa realmente enviar essa solicitação, vamos remover

333
00:15:07,400 --> 00:15:09,050
‫o ponto de interrupção aqui.

334
00:15:10,650 --> 00:15:11,483
‫OK?

335
00:15:11,483 --> 00:15:14,410
‫Enviou a solicitação e agora não conseguimos o

336
00:15:14,410 --> 00:15:16,073
‫nome e a duração.

337
00:15:16,920 --> 00:15:19,410
‫Então, vamos fingir que esse é o

338
00:15:19,410 --> 00:15:23,510
‫nosso bug agora e estamos tentando descobrir por que isso não está funcionando.

339
00:15:23,510 --> 00:15:24,520
‫OK?

340
00:15:24,520 --> 00:15:26,490
‫Então, vamos ao nosso depurador.

341
00:15:26,490 --> 00:15:28,470
‫E sabemos que o erro provavelmente deve

342
00:15:28,470 --> 00:15:31,053
‫estar em algum lugar em nosso método de campos de limite.

343
00:15:32,090 --> 00:15:35,530
‫E então vamos basicamente parar a execução do

344
00:15:35,530 --> 00:15:37,320
‫código neste ponto, ok?

345
00:15:37,320 --> 00:15:40,880
‫Porque é aqui que esse método será realmente chamado e,

346
00:15:40,880 --> 00:15:43,927
‫a partir daqui, podemos inserir essa função para

347
00:15:43,927 --> 00:15:45,130
‫esse método.

348
00:15:45,130 --> 00:15:46,100
‫OK?

349
00:15:46,100 --> 00:15:48,883
‫Então, vamos disparar essa solicitação

350
00:15:50,240 --> 00:15:54,240
‫agora, e agora vamos voltar ao nosso depurador automaticamente.

351
00:15:54,240 --> 00:15:57,250
‫Então, neste ponto, esta linha e esta linha e

352
00:15:57,250 --> 00:16:00,880
‫esta linha de código já foram executadas, então vamos agora

353
00:16:00,880 --> 00:16:02,980
‫usar a ferramenta step, ok?

354
00:16:02,980 --> 00:16:05,770
‫A etapa que fará é basicamente executar a

355
00:16:05,770 --> 00:16:07,430
‫próxima linha de código.

356
00:16:07,430 --> 00:16:09,810
‫E neste caso isso estará dentro do

357
00:16:09,810 --> 00:16:11,790
‫método de limites de campos.

358
00:16:11,790 --> 00:16:16,143
‫Então dê um passo, e então ele se moverá direto para essa função.

359
00:16:17,000 --> 00:16:20,670
‫Ok, então vamos dar uma olhada no que temos aqui.

360
00:16:20,670 --> 00:16:24,070
‫Por exemplo, isso. string de consulta tem duração de

361
00:16:24,070 --> 00:16:26,083
‫vírgula de nome, então isso está correto, certo?

362
00:16:26,990 --> 00:16:30,520
‫Ok, então vamos passar para a próxima linha.

363
00:16:30,520 --> 00:16:33,600
‫Tudo bem e então é aqui que esta

364
00:16:33,600 --> 00:16:35,263
‫operação está realmente acontecendo.

365
00:16:36,440 --> 00:16:38,460
‫Então o próximo.

366
00:16:38,460 --> 00:16:40,823
‫Vamos dar uma olhada em nossas variáveis aqui.

367
00:16:42,500 --> 00:16:47,090
‫E aqui agora vemos o campo, e aqui temos nosso bug.

368
00:16:47,090 --> 00:16:47,930
‫OK?

369
00:16:47,930 --> 00:16:50,810
‫Portanto, o problema é que não temos espaço

370
00:16:50,810 --> 00:16:53,170
‫entre o nome e a duração.

371
00:16:53,170 --> 00:16:54,830
‫E é por isso que não está funcionando.

372
00:16:54,830 --> 00:16:58,410
‫Portanto, os campos são obviamente definidos aqui,

373
00:16:58,410 --> 00:17:02,500
‫e assim podemos encontrar nosso bug e corrigi-lo imediatamente.

374
00:17:02,500 --> 00:17:04,940
‫Portanto, lembre-se de que as etapas

375
00:17:04,940 --> 00:17:07,780
‫adicionadas que fazemos aqui são refletidas imediatamente no código.

376
00:17:07,780 --> 00:17:08,823
‫Portanto,

377
00:17:09,700 --> 00:17:12,560
‫salve-o e ele fará de novo.

378
00:17:12,560 --> 00:17:14,233
‫Então eu posso continuar pisando.

379
00:17:15,140 --> 00:17:17,270
‫E agora os campos estão corretos.

380
00:17:17,270 --> 00:17:19,193
‫Portanto, nomeie a duração do espaço.

381
00:17:20,780 --> 00:17:22,670
‫Em seguida, a próxima linha de código.

382
00:17:22,670 --> 00:17:26,330
‫E agora entramos no método select na consulta.

383
00:17:26,330 --> 00:17:28,420
‫Mas não estamos interessados nisso de forma alguma, então

384
00:17:28,420 --> 00:17:32,543
‫podemos dizer "saia da função atual. " OK?

385
00:17:32,543 --> 00:17:35,730
‫Então aquele select que pensávamos estar rodando

386
00:17:35,730 --> 00:17:37,880
‫essa função aqui, ok?

387
00:17:37,880 --> 00:17:40,150
‫Mas é claro que não estávamos interessados

388
00:17:40,150 --> 00:17:43,080
‫nisso, então simplesmente desistimos e passamos para a próxima linha.

389
00:17:43,080 --> 00:17:44,950
‫Portanto, agora temos

390
00:17:44,950 --> 00:17:48,330
‫que retornar esta, a próxima linha e novamente.

391
00:17:48,330 --> 00:17:51,373
‫Então, agora estamos de volta a onde estávamos, mas na próxima linha.

392
00:17:52,590 --> 00:17:53,840
‫Então, vamos continuar fazendo isso.

393
00:17:55,040 --> 00:17:56,750
‫Agora estamos na página

394
00:17:56,750 --> 00:17:59,060
‫oito, mas não estamos realmente interessados

395
00:17:59,060 --> 00:18:01,660
‫nesta, então vamos sair da função atual novamente.

396
00:18:02,950 --> 00:18:05,190
‫E agora estamos aqui na definição dos passeios.

397
00:18:05,190 --> 00:18:07,840
‫Que neste ponto ainda não está feito.

398
00:18:07,840 --> 00:18:10,610
‫E então vamos dizer novamente passo.

399
00:18:10,610 --> 00:18:14,070
‫E agora, neste ponto, nossos roteiros devem ser definidos.

400
00:18:14,070 --> 00:18:17,950
‫Tudo bem, então temos nossos nove tours aqui.

401
00:18:17,950 --> 00:18:19,250
‫Vamos dar uma olhada neles

402
00:18:20,590 --> 00:18:21,810
‫e aqui estão.

403
00:18:21,810 --> 00:18:23,670
‫E, na verdade, eles têm

404
00:18:23,670 --> 00:18:26,880
‫todos os dados, não apenas aquele que definimos, mas,

405
00:18:26,880 --> 00:18:28,560
‫na verdade, não tem.

406
00:18:28,560 --> 00:18:32,220
‫Portanto, temos apenas o nome e a duração, portanto,

407
00:18:32,220 --> 00:18:35,490
‫a duração, o nome e todos os

408
00:18:35,490 --> 00:18:36,980
‫outros são indefinidos.

409
00:18:36,980 --> 00:18:40,010
‫Então, isso é porque limitamos uma consulta a apenas

410
00:18:40,010 --> 00:18:41,603
‫esses dois campos, lembra?

411
00:18:42,500 --> 00:18:45,350
‫Agora o que eu também queria mostrar a vocês

412
00:18:45,350 --> 00:18:49,370
‫está aqui nos recursos, podemos dar uma olhada em nossa consulta e aqui temos

413
00:18:49,370 --> 00:18:52,240
‫a propriedade fields por exemplo, onde vemos a duração definida

414
00:18:52,240 --> 00:18:54,780
‫como um e o nome definido como um.

415
00:18:54,780 --> 00:18:58,300
‫E esses são exatamente os dois nomes que selecionamos.

416
00:18:58,300 --> 00:19:00,420
‫Também temos essas opções

417
00:19:00,420 --> 00:19:05,420
‫aqui, que neste ponto estão definidas para criá-lo menos um.

418
00:19:05,690 --> 00:19:07,393
‫E isso está vindo daqui.

419
00:19:08,560 --> 00:19:10,500
‫Então, isso aqui.

420
00:19:10,500 --> 00:19:13,360
‫Então, basicamente o que esse método aqui, esse

421
00:19:13,360 --> 00:19:17,350
‫método de classificação fará é adicionar essa propriedade de classificação aqui

422
00:19:17,350 --> 00:19:18,860
‫a essas opções, certo?

423
00:19:18,860 --> 00:19:22,110
‫E também temos o limite e o salto, que obviamente vêm aqui

424
00:19:22,110 --> 00:19:23,763
‫a partir da página oito.

425
00:19:25,690 --> 00:19:26,523
‫OK?

426
00:19:26,523 --> 00:19:29,160
‫Então eu pensei que isso também era

427
00:19:29,160 --> 00:19:33,880
‫interessante e sim, nosso código agora está realmente corrigido e vamos continuar executando

428
00:19:33,880 --> 00:19:34,713
‫isso.

429
00:19:35,550 --> 00:19:38,630
‫E agora devemos ter nosso resultado correto.

430
00:19:38,630 --> 00:19:41,510
‫Agora aqui está escrito que não conseguimos nenhuma resposta,

431
00:19:41,510 --> 00:19:44,593
‫e isso é porque demoramos muito para consertar nosso código.

432
00:19:45,490 --> 00:19:47,280
‫Portanto, ocorreu um erro ao conectar.

433
00:19:47,280 --> 00:19:48,693
‫Mas se agora o enviarmos de

434
00:19:49,530 --> 00:19:51,050
‫novo, e agora o fizermos mais rápido.

435
00:19:51,050 --> 00:19:53,650
‫Ou, na verdade, poderíamos remover nosso ponto de interrupção totalmente.

436
00:19:55,280 --> 00:19:56,780
‫Então, vamos mantê-lo

437
00:19:56,780 --> 00:19:59,570
‫funcionando, vamos voltar e agora realmente temos a

438
00:19:59,570 --> 00:20:01,570
‫duração e o nome também.

439
00:20:01,570 --> 00:20:04,260
‫Isso porque acabamos de consertar nosso

440
00:20:04,260 --> 00:20:06,550
‫código usando o depurador NDB.

441
00:20:06,550 --> 00:20:07,990
‫Tão bom.

442
00:20:07,990 --> 00:20:10,840
‫Essa é uma ferramenta realmente incrível e útil

443
00:20:10,840 --> 00:20:13,260
‫que continuaremos usando durante o resto

444
00:20:13,260 --> 00:20:14,220
‫do curso.

445
00:20:14,220 --> 00:20:17,530
‫Talvez nem sempre, às vezes é mais rápido apenas inserir

446
00:20:17,530 --> 00:20:19,540
‫um log de saída do console.

447
00:20:19,540 --> 00:20:22,350
‫Mas realmente, em alguns casos mais complicados, gosto de

448
00:20:22,350 --> 00:20:24,253
‫usar esse tipo de ferramenta.

