﻿1
00:00:01,120 --> 00:00:02,420
‫Instructor: En este video,

2
00:00:02,420 --> 00:00:06,120
‫aprenderemos sobre la depuración de Node. JS porque, seamos sinceros, siempre

3
00:00:06,120 --> 00:00:09,240
‫habrá algunos errores en nuestro código, sin importar

4
00:00:09,240 --> 00:00:11,040
‫cuán cuidadosos seamos.

5
00:00:11,040 --> 00:00:13,910
‫Por eso es bueno tener una herramienta que nos

6
00:00:13,910 --> 00:00:15,740
‫ayude a depurar nuestro código.

7
00:00:15,740 --> 00:00:18,870
‫Ahora bien, esto no se trata realmente de manejo de errores con

8
00:00:18,870 --> 00:00:21,200
‫Express, pero pensé que este era un buen momento

9
00:00:21,200 --> 00:00:23,510
‫en el curso para presentarle una herramienta

10
00:00:23,510 --> 00:00:26,423
‫de depuración que luego podríamos usar durante el resto del curso.

11
00:00:27,920 --> 00:00:31,270
‫Y hay diferentes formas de depurar Node. Código JS.

12
00:00:31,270 --> 00:00:33,740
‫Por ejemplo, podríamos usar el código VS para eso.

13
00:00:33,740 --> 00:00:38,190
‫Pero, en realidad, Google lanzó recientemente una herramienta increíble

14
00:00:38,190 --> 00:00:42,840
‫que podemos usar para depurar que se llama NDB, ¿de acuerdo?

15
00:00:42,840 --> 00:00:46,610
‫Así que pasemos a nuestra otra terminal aquí

16
00:00:46,610 --> 00:00:48,850
‫y luego instalemos NDB.

17
00:00:48,850 --> 00:00:51,720
‫Y NDB, que significa depurador de nodo, en realidad

18
00:00:51,720 --> 00:00:53,823
‫es solo un paquete NPM.

19
00:00:54,780 --> 00:00:56,927
‫Entonces NPM instala NDB.

20
00:00:58,440 --> 00:01:00,250
‫De acuerdo, y

21
00:01:00,250 --> 00:01:04,120
‫luego debería instalarlo como un paquete global, ¿de acuerdo?

22
00:01:04,120 --> 00:01:07,563
‫Y si está en una Mac, es posible que necesite permisos globales.

23
00:01:08,440 --> 00:01:10,890
‫Así que escribe sudo aquí al frente.

24
00:01:10,890 --> 00:01:14,720
‫O si no puede instalarlo globalmente, siempre puede

25
00:01:14,720 --> 00:01:17,610
‫instalarlo localmente como una dependencia

26
00:01:17,610 --> 00:01:19,003
‫de muerte.

27
00:01:20,040 --> 00:01:22,420
‫Así que así, ¿de acuerdo?

28
00:01:22,420 --> 00:01:25,000
‫De todos modos, continúe e instale esta herramienta ahora.

29
00:01:25,000 --> 00:01:25,870
‫No lo

30
00:01:25,870 --> 00:01:28,590
‫voy a hacer porque puede ser una descarga bastante

31
00:01:28,590 --> 00:01:30,630
‫pesada y eso lleva demasiado tiempo ahora.

32
00:01:30,630 --> 00:01:33,720
‫De todos modos, tan pronto como tengas la herramienta instalada,

33
00:01:33,720 --> 00:01:36,130
‫vayamos al paquete. Jason y

34
00:01:36,130 --> 00:01:39,710
‫agregue un nuevo guión aquí, ¿de acuerdo?

35
00:01:39,710 --> 00:01:42,173
‫Y voy a llamar a eso una depuración.

36
00:01:43,770 --> 00:01:44,900
‫¿Okey?

37
00:01:44,900 --> 00:01:47,270
‫Entonces, el comando que queremos ejecutar

38
00:01:47,270 --> 00:01:50,890
‫aquí es simplemente NDB, entonces el depurador de notas

39
00:01:50,890 --> 00:01:53,250
‫y luego nuevamente nuestro punto de

40
00:01:53,250 --> 00:01:56,270
‫entrada, Entonces, servidor. js ¿Está

41
00:01:56,270 --> 00:01:57,103
‫bien?

42
00:01:57,103 --> 00:01:59,200
‫Y ahora esto funcionará sin

43
00:01:59,200 --> 00:02:01,320
‫importar si instaló NDB local o globalmente.

44
00:02:01,320 --> 00:02:03,537
‫Muy bien, ahora ejecutemos el script.

45
00:02:03,537 --> 00:02:05,260
‫Y para que

46
00:02:05,260 --> 00:02:07,690
‫esto funcione, necesitamos terminar este proceso

47
00:02:07,690 --> 00:02:09,460
‫porque básicamente también iniciará

48
00:02:09,460 --> 00:02:12,210
‫el servidor y luego intentará hacerlo en

49
00:02:12,210 --> 00:02:14,120
‫el mismo puerto y eso,

50
00:02:14,120 --> 00:02:15,980
‫por supuesto, no funcionará.

51
00:02:15,980 --> 00:02:18,450
‫Así que tenemos que terminar el que se

52
00:02:18,450 --> 00:02:21,670
‫está ejecutando actualmente y luego desde aquí podemos ejecutar NPM

53
00:02:21,670 --> 00:02:22,503
‫ejecutar depuración

54
00:02:23,690 --> 00:02:24,523
‫Muy bien,

55
00:02:24,523 --> 00:02:26,370
‫y ahora debería abrirse una nueva

56
00:02:26,370 --> 00:02:28,230
‫ventana de Chrome, lo que se

57
00:02:29,070 --> 00:02:31,220
‫llama un Chrome sin cabeza, pero no

58
00:02:31,220 --> 00:02:32,690
‫es un Chrome real.

59
00:02:32,690 --> 00:02:34,890
‫Entonces verá el ícono de Chrome aquí abajo

60
00:02:34,890 --> 00:02:36,550
‫y también aquí en la barra

61
00:02:36,550 --> 00:02:39,410
‫de menú, pero en realidad este es solo el depurador de notas.

62
00:02:39,410 --> 00:02:41,260
‫entonces que tenemos aqui?

63
00:02:41,260 --> 00:02:45,030
‫Bueno, en el lado izquierdo, tenemos nuestro sistema de archivos completo.

64
00:02:45,030 --> 00:02:48,010
‫También tenemos acceso a nuestros scripts de NPM aquí,

65
00:02:48,010 --> 00:02:50,810
‫que de hecho podemos ejecutar desde aquí.

66
00:02:50,810 --> 00:02:52,910
‫También tenemos una consola y aquí tenemos

67
00:02:52,910 --> 00:02:55,610
‫nuestras salidas habituales con la aplicación ejecutándose y la

68
00:02:55,610 --> 00:02:57,310
‫conexión a la base

69
00:02:58,570 --> 00:03:01,330
‫de datos y también tenemos las pestañas de rendimiento y

70
00:03:01,330 --> 00:03:03,090
‫memoria, que no vamos a usar.

71
00:03:03,090 --> 00:03:05,170
‫Muy bien, ahora si está familiarizado

72
00:03:05,170 --> 00:03:07,130
‫con el proceso de

73
00:03:07,130 --> 00:03:10,100
‫depuración general, entonces todo esto le resultará familiar.

74
00:03:10,100 --> 00:03:12,260
‫Está bien, pero si no, no te preocupes, te

75
00:03:12,260 --> 00:03:13,810
‫mostraré un par de técnicas a

76
00:03:13,810 --> 00:03:15,240
‫lo largo de este video.

77
00:03:15,240 --> 00:03:19,560
‫Muy bien, de todos modos, abramos ahora nuestro servidor. js.

78
00:03:19,560 --> 00:03:21,460
‫Y una cosa que es realmente

79
00:03:21,460 --> 00:03:24,500
‫sorprendente es que podemos editar nuestros archivos aquí, así

80
00:03:24,500 --> 00:03:26,040
‫que en este depurador.

81
00:03:26,040 --> 00:03:28,530
‫Entonces, por ejemplo, digamos que encontramos un error

82
00:03:28,530 --> 00:03:30,820
‫y luego queremos solucionarlo de inmediato.

83
00:03:30,820 --> 00:03:33,340
‫Podemos hacerlo aquí mismo en el depurador

84
00:03:33,340 --> 00:03:35,790
‫y luego actualizará el código original.

85
00:03:35,790 --> 00:03:37,020
‫Entonces, solo para

86
00:03:37,020 --> 00:03:38,943
‫probarlo, agreguemos un comentario aquí.

87
00:03:40,050 --> 00:03:44,460
‫Entonces, prueba, luego presiona comando o control s para guardar y luego cuando

88
00:03:44,460 --> 00:03:46,570
‫volvamos a nuestro código y abrimos

89
00:03:47,830 --> 00:03:49,800
‫el servidor. js allí,

90
00:03:49,800 --> 00:03:53,060
‫verá que el comentario está realmente aquí.

91
00:03:53,060 --> 00:03:53,950
‫¿Okey?

92
00:03:53,950 --> 00:03:55,810
‫Y si ahora lo

93
00:03:55,810 --> 00:03:57,370
‫borramos de aquí,

94
00:03:57,370 --> 00:03:59,220
‫lo guardamos y volvemos

95
00:03:59,220 --> 00:04:02,300
‫al depurador, entonces también desaparecerá de aquí.

96
00:04:02,300 --> 00:04:04,810
‫Bien, pero ahora sobre la depuración en sí.

97
00:04:04,810 --> 00:04:06,860
‫Yo diría que el aspecto

98
00:04:06,860 --> 00:04:09,740
‫fundamental de la depuración es establecer puntos de ruptura.

99
00:04:09,740 --> 00:04:12,420
‫Entonces, los puntos de interrupción son básicamente puntos en nuestro

100
00:04:12,420 --> 00:04:14,540
‫código que podemos definir aquí en

101
00:04:14,540 --> 00:04:16,810
‫el depurador, donde nuestro código dejará de ejecutarse.

102
00:04:16,810 --> 00:04:18,810
‫Básicamente se congelará en el tiempo

103
00:04:18,810 --> 00:04:21,900
‫y luego podremos echar un vistazo a todas nuestras variables.

104
00:04:21,900 --> 00:04:24,530
‫Bien, entonces será extremadamente útil para

105
00:04:24,530 --> 00:04:26,270
‫encontrar algunos errores.

106
00:04:26,270 --> 00:04:28,340
‫Ahora, en este momento no hay

107
00:04:28,340 --> 00:04:30,860
‫ningún error aquí, pero agreguemos un punto de interrupción.

108
00:04:30,860 --> 00:04:34,850
‫Y voy a agregar ese punto de quiebre aquí en esta línea 21.

109
00:04:34,850 --> 00:04:36,610
‫Así que hago clic aquí en

110
00:04:36,610 --> 00:04:38,920
‫esta línea y luego ves este marcador verde, ¿de acuerdo?

111
00:04:38,920 --> 00:04:41,600
‫Y eso significa que el código se detendrá en

112
00:04:41,600 --> 00:04:43,950
‫este punto cuando lo ejecutemos, ¿de acuerdo?

113
00:04:43,950 --> 00:04:45,750
‫Y también puede verlo aquí en

114
00:04:45,750 --> 00:04:48,850
‫el lado derecho en la pestaña de puntos de interrupción aquí.

115
00:04:48,850 --> 00:04:50,680
‫Ahora, nuestra aplicación ya se

116
00:04:50,680 --> 00:04:52,360
‫está ejecutando en este

117
00:04:52,360 --> 00:04:55,350
‫punto y básicamente está esperando solicitudes para ingresar.

118
00:04:55,350 --> 00:04:56,830
‫Entonces, lo que tenemos que

119
00:04:56,830 --> 00:05:00,810
‫hacer aquí es hacer clic derecho y luego hacer clic en ejecutar este script.

120
00:05:00,810 --> 00:05:02,670
‫De acuerdo, entonces básicamente ejecutará el

121
00:05:02,670 --> 00:05:04,153
‫script aquí nuevamente.

122
00:05:05,638 --> 00:05:06,720
‫¿Está bien?

123
00:05:06,720 --> 00:05:08,390
‫Y aquí vamos.

124
00:05:08,390 --> 00:05:10,380
‫Entonces puede ver aquí en el lado

125
00:05:10,380 --> 00:05:12,940
‫derecho, que dice pausado en el punto de interrupción y, por

126
00:05:12,940 --> 00:05:16,040
‫lo tanto, todo el código que está por encima de este punto de

127
00:05:16,040 --> 00:05:18,330
‫interrupción aquí ya se ha ejecutado en este punto.

128
00:05:18,330 --> 00:05:21,390
‫Y ahora podemos echar un vistazo a las variables.

129
00:05:21,390 --> 00:05:24,230
‫Por ejemplo, podemos colocar el cursor sobre esta

130
00:05:24,230 --> 00:05:27,220
‫variable de puerto y vemos que está configurada en 3,000.

131
00:05:27,220 --> 00:05:29,670
‫Y también, de hecho, toque este lugar aquí

132
00:05:29,670 --> 00:05:31,560
‫en el código aquí, de acuerdo.

133
00:05:31,560 --> 00:05:33,830
‫Y luego la tercera forma de verlo es

134
00:05:33,830 --> 00:05:35,380
‫aquí en el lado derecho.

135
00:05:35,380 --> 00:05:38,280
‫Así que tenemos un par de pestañas básicamente aquí para los

136
00:05:38,280 --> 00:05:40,940
‫procesos de nodo, el reloj, la pila de llamadas, lo

137
00:05:40,940 --> 00:05:43,240
‫cual no es realmente importante por ahora.

138
00:05:43,240 --> 00:05:46,940
‫El alcance, y entonces el alcance es donde están

139
00:05:46,940 --> 00:05:49,050
‫todas nuestras variables, ¿de acuerdo?

140
00:05:49,050 --> 00:05:52,530
‫Y aquí nuevamente, tiene el puerto configurado en 3,000.

141
00:05:52,530 --> 00:05:54,620
‫De acuerdo, y aquí también puedes ver

142
00:05:54,620 --> 00:05:57,010
‫las cinco variables a las que tenemos acceso

143
00:05:57,010 --> 00:05:58,490
‫en todos los módulos.

144
00:05:58,490 --> 00:06:01,290
‫¿Recuerdas eso de la conferencia de modelos?

145
00:06:01,290 --> 00:06:03,590
‫Entonces tenemos el nombre del

146
00:06:03,590 --> 00:06:07,250
‫directorio, tenemos el nombre del archivo, tenemos la función require,

147
00:06:07,250 --> 00:06:10,150
‫tenemos el módulo y tenemos la exportación.

148
00:06:10,150 --> 00:06:12,690
‫Así que recuerde, estas son las cinco variables que

149
00:06:12,690 --> 00:06:15,400
‫están disponibles en todos y cada uno de los módulos.

150
00:06:15,400 --> 00:06:17,960
‫Y, de hecho, cuando ejecutamos un

151
00:06:17,960 --> 00:06:21,730
‫código como este en el depurador, podemos ver que todo

152
00:06:21,730 --> 00:06:24,383
‫nuestro código está incluido en esta función.

153
00:06:25,390 --> 00:06:26,560
‫¿Derecha?

154
00:06:26,560 --> 00:06:28,810
‫Entonces esta función contenedora que

155
00:06:28,810 --> 00:06:31,230
‫nos da acceso a estas cinco variables.

156
00:06:31,230 --> 00:06:34,710
‫Muy bien, a continuación también quiero echar un vistazo a

157
00:06:34,710 --> 00:06:38,013
‫nuestra variable de aplicación, así que básicamente la aplicación Express

158
00:06:38,013 --> 00:06:42,330
‫que exportamos desde la aplicación. js, recuerda eso.

159
00:06:42,330 --> 00:06:44,870
‫Y aquí hay un montón de cosas,

160
00:06:44,870 --> 00:06:47,330
‫pero lo que encuentro interesante

161
00:06:47,330 --> 00:06:50,393
‫es echar un vistazo a este enrutador aquí.

162
00:06:51,660 --> 00:06:54,763
‫Bien, entonces en el enrutador tenemos pila.

163
00:06:56,680 --> 00:06:59,100
‫Bien, entonces abramos esto un poco y

164
00:07:00,240 --> 00:07:02,070
‫esta pila aquí es

165
00:07:02,070 --> 00:07:05,420
‫básicamente la pila de middleware que tenemos en nuestra aplicación.

166
00:07:05,420 --> 00:07:09,010
‫Bien, por ejemplo, tenemos nuestro jsonParser aquí,

167
00:07:09,010 --> 00:07:13,030
‫tenemos el código que sirve a los archivos estáticos.

168
00:07:13,030 --> 00:07:16,760
‫Échale un vistazo aquí en la aplicación. js así que este

169
00:07:16,760 --> 00:07:19,170
‫expreso. estático.

170
00:07:19,170 --> 00:07:21,380
‫También tenemos el registrador aquí

171
00:07:21,380 --> 00:07:23,910
‫que proviene del uso de Morgan.

172
00:07:23,910 --> 00:07:26,310
‫Entonces tienes estas dos funciones de middleware

173
00:07:26,310 --> 00:07:27,480
‫siguientes, entonces

174
00:07:27,480 --> 00:07:31,590
‫estas dos aquí, que son anónimas, entonces esta y esta y

175
00:07:31,590 --> 00:07:33,740
‫tal vez podamos echarles un vistazo.

176
00:07:33,740 --> 00:07:35,803
‫Pero no realmente.

177
00:07:36,640 --> 00:07:38,390
‫De acuerdo, no importa.

178
00:07:38,390 --> 00:07:40,740
‫Entonces, esto es solo por curiosidad y

179
00:07:40,740 --> 00:07:42,170
‫para mostrarle que realmente

180
00:07:42,170 --> 00:07:45,520
‫podemos echar un vistazo a nuestra pila de middleware, ¿de acuerdo?

181
00:07:45,520 --> 00:07:47,603
‫Entonces finalmente tenemos nuestros dos enrutadores.

182
00:07:48,795 --> 00:07:49,970
‫¿Okey?

183
00:07:49,970 --> 00:07:53,080
‫Entonces, tenemos el enrutador, y aquí ve realmente la

184
00:07:53,080 --> 00:07:55,160
‫ruta para la que se aplica.

185
00:07:55,160 --> 00:08:00,160
‫Así que api / v1 / tours está bien y encuentro esto realmente interesante.

186
00:08:00,980 --> 00:08:03,710
‫Por supuesto, todavía tenemos a los usuarios aquí también.

187
00:08:03,710 --> 00:08:07,250
‫Y así, con esto realmente puedo echar un vistazo a

188
00:08:07,250 --> 00:08:09,823
‫cómo funciona la aplicación Express entre bastidores.

189
00:08:10,710 --> 00:08:11,543
‫¿Okey?

190
00:08:12,380 --> 00:08:14,623
‫Así que cerremos todo esto.

191
00:08:16,140 --> 00:08:18,440
‫Y la otra cosa que quería mostrarles

192
00:08:18,440 --> 00:08:20,210
‫está aquí en las

193
00:08:21,120 --> 00:08:24,300
‫variables globales porque aquí tenemos la variable de proceso o

194
00:08:25,850 --> 00:08:28,453
‫al menos deberíamos tenerla en algún lugar aquí.

195
00:08:30,700 --> 00:08:32,910
‫Sí, así que aquí está.

196
00:08:32,910 --> 00:08:35,140
‫Así que aquí tenemos la variable de

197
00:08:35,140 --> 00:08:37,400
‫proceso que se recuerda, disponible en todas partes.

198
00:08:37,400 --> 00:08:41,070
‫Y es por eso que aquí se llama variable global.

199
00:08:41,070 --> 00:08:43,310
‫Luego, tenemos el proceso. env y

200
00:08:44,300 --> 00:08:46,030
‫recordar que es aquí

201
00:08:46,030 --> 00:08:49,250
‫donde se almacenan todas nuestras variables de entorno.

202
00:08:49,250 --> 00:08:52,180
‫Y, de hecho, aquí tenemos nuestra cadena de base

203
00:08:52,180 --> 00:08:55,340
‫de datos, tenemos la base de datos local, la contraseña

204
00:08:55,340 --> 00:08:57,910
‫y realmente todas las demás variables de entorno

205
00:08:57,910 --> 00:09:01,333
‫que definimos en nuestra configuración. n archivo.

206
00:09:02,630 --> 00:09:03,740
‫¿Está bien?

207
00:09:03,740 --> 00:09:07,070
‫Cosas realmente interesantes que podemos ver aquí.

208
00:09:07,070 --> 00:09:10,260
‫Pero ahora continuemos con nuestra depuración.

209
00:09:10,260 --> 00:09:11,093
‫¿Okey?

210
00:09:11,093 --> 00:09:13,540
‫Así que detuvimos el código, lo congelamos a

211
00:09:13,540 --> 00:09:16,630
‫tiempo aquí en este punto, así que en la línea 21.

212
00:09:16,630 --> 00:09:19,720
‫Bien, y ahora podemos hacer clic aquí en este

213
00:09:19,720 --> 00:09:22,400
‫botón para continuar ejecutando el código.

214
00:09:22,400 --> 00:09:24,210
‫Y dado que no tenemos

215
00:09:24,210 --> 00:09:26,070
‫más puntos de interrupción, el código no

216
00:09:26,070 --> 00:09:28,500
‫se romperá más y básicamente terminará de ejecutarse.

217
00:09:28,500 --> 00:09:29,980
‫Así que hagámoslo.

218
00:09:29,980 --> 00:09:32,910
‫Y ahora nuestra aplicación realmente se está ejecutando.

219
00:09:32,910 --> 00:09:33,830
‫Echemos un vistazo a eso.

220
00:09:33,830 --> 00:09:36,600
‫En Console, ¿de acuerdo?

221
00:09:36,600 --> 00:09:38,720
‫Entonces, la aplicación se ejecuta en el puerto 3000 y la

222
00:09:38,720 --> 00:09:40,793
‫conexión a la base de datos es exitosa, por supuesto.

223
00:09:43,550 --> 00:09:44,793
‫Que paso aqui

224
00:09:46,120 --> 00:09:47,350
‫Bien, hagamos

225
00:09:47,350 --> 00:09:50,163
‫ahora rápidamente una solicitud aquí.

226
00:09:51,580 --> 00:09:53,650
‫Así que simplemente uno para / tours

227
00:09:55,532 --> 00:09:57,100
‫y ahora tenemos toda esta

228
00:09:57,100 --> 00:09:59,683
‫basura aquí y me ocuparé de eso en un segundo.

229
00:10:01,050 --> 00:10:04,110
‫Muy bien, y si ahora regresa a nuestra Consola

230
00:10:04,110 --> 00:10:07,670
‫aquí, entonces, por supuesto, tenemos todo el código que teníamos antes.

231
00:10:07,670 --> 00:10:09,220
‫Hola desde el

232
00:10:09,220 --> 00:10:12,120
‫middleware y luego cuánto tardó realmente la consulta.

233
00:10:12,120 --> 00:10:14,890
‫Muy bien, y ahora, antes de hacer

234
00:10:14,890 --> 00:10:17,693
‫cualquier otra cosa, eliminémonos de estos tours basura.

235
00:10:19,380 --> 00:10:20,893
‫Así que lo volveré a cargar

236
00:10:22,270 --> 00:10:24,720
‫aquí, y supongo que estará en algún lugar al final.

237
00:10:26,720 --> 00:10:29,103
‫Entonces, prueba lo que sea aquí.

238
00:10:29,980 --> 00:10:31,593
‫Así que deshagámonos de eso.

239
00:10:32,490 --> 00:10:35,573
‫Esta es la gira secreta y de hecho quiero mantenerla aquí.

240
00:10:37,480 --> 00:10:40,413
‫Pero todo de aquí en adelante ya no lo queremos.

241
00:10:44,720 --> 00:10:45,830
‫Y así

242
00:10:48,150 --> 00:10:51,490
‫que sí, ahora volvemos a tener solo

243
00:10:51,490 --> 00:10:53,480
‫10 giras, como antes.

244
00:10:53,480 --> 00:10:55,860
‫De todos modos, establezcamos ahora un punto de interrupción

245
00:10:55,860 --> 00:10:58,203
‫en la función que maneja esta ruta.

246
00:10:59,060 --> 00:11:02,150
‫Bien, entonces llegamos a nuestra carpeta de controladores y

247
00:11:02,150 --> 00:11:04,540
‫ahí tenemos el controlador de gira.

248
00:11:04,540 --> 00:11:05,373
‫¿Okey?

249
00:11:05,373 --> 00:11:08,200
‫Y luego, la función del controlador es obtener todos los recorridos.

250
00:11:08,200 --> 00:11:09,760
‫Entonces, por ahora, todo

251
00:11:09,760 --> 00:11:11,960
‫lo que quería hacer es establecer un punto

252
00:11:11,960 --> 00:11:15,010
‫de interrupción aquí para que podamos ver cómo se ven estas

253
00:11:15,010 --> 00:11:17,710
‫variables después de que la consulta ya esté hecha.

254
00:11:17,710 --> 00:11:20,430
‫Entonces, este código aquí obtendrá nuestros recorridos

255
00:11:20,430 --> 00:11:21,900
‫y luego detendremos

256
00:11:21,900 --> 00:11:25,210
‫el código básicamente antes de enviarlo como respuesta.

257
00:11:25,210 --> 00:11:29,790
‫De acuerdo, todo lo que tenemos que hacer es realizar la

258
00:11:29,790 --> 00:11:32,730
‫solicitud porque eso activará esa función.

259
00:11:32,730 --> 00:11:33,600
‫¿Derecha?

260
00:11:33,600 --> 00:11:36,550
‫Y como tenemos un punto de interrupción, automáticamente regresamos

261
00:11:36,550 --> 00:11:39,440
‫a esta ventana aquí, y al punto donde

262
00:11:39,440 --> 00:11:41,270
‫el código se ha detenido.

263
00:11:41,270 --> 00:11:43,713
‫Entonces, ¿qué tipo de variables tenemos aquí?

264
00:11:44,830 --> 00:11:47,690
‫Entonces ves que tenemos la solicitud y una respuesta,

265
00:11:47,690 --> 00:11:49,630
‫y también tenemos las características

266
00:11:49,630 --> 00:11:51,670
‫variables, y los recorridos, por supuesto.

267
00:11:51,670 --> 00:11:53,770
‫Así que primero echemos un vistazo a la solicitud.

268
00:11:54,740 --> 00:11:57,500
‫Y aquí de nuevo, ves que realmente tenemos todo

269
00:11:57,500 --> 00:11:58,560
‫tipo de cosas.

270
00:11:58,560 --> 00:12:02,470
‫Entonces tenemos baseurl, tenemos el método, tenemos, por

271
00:12:02,470 --> 00:12:05,150
‫ejemplo, request. query, que en este

272
00:12:05,150 --> 00:12:07,280
‫momento está vacía porque no pasamos

273
00:12:07,280 --> 00:12:08,560
‫ninguna cadena de

274
00:12:08,560 --> 00:12:11,170
‫consulta, pero puede ver que ya está aquí.

275
00:12:11,170 --> 00:12:13,730
‫De acuerdo, entonces empiezas a ver lo

276
00:12:13,730 --> 00:12:16,810
‫útil que puede ser esto para depurar nuestro código.

277
00:12:16,810 --> 00:12:20,060
‫Básicamente, congelar nuestro código a tiempo en lugar de tener que

278
00:12:20,060 --> 00:12:23,620
‫hacer todo esto en la consola. registros que solíamos hacer

279
00:12:23,620 --> 00:12:25,040
‫hasta este punto.

280
00:12:25,040 --> 00:12:27,770
‫Entonces, por lo general, cuando queríamos echar un vistazo a la consulta,

281
00:12:27,770 --> 00:12:31,010
‫por ejemplo, hacíamos un montón de consola. logs y utilícelo para

282
00:12:31,010 --> 00:12:34,590
‫descubrir un error en caso de que algo

283
00:12:34,590 --> 00:12:35,950
‫no funcione.

284
00:12:35,950 --> 00:12:38,150
‫Correcto, pero ahora tenemos esta increíble herramienta que puede

285
00:12:38,150 --> 00:12:41,130
‫ayudarnos a evitar todas estas consolas. registros, por

286
00:12:41,130 --> 00:12:42,460
‫ejemplo.

287
00:12:42,460 --> 00:12:44,530
‫Entonces también tenemos la respuesta, por supuesto.

288
00:12:44,530 --> 00:12:48,460
‫Y nuevamente ves todas estas propiedades y métodos que están ahí,

289
00:12:48,460 --> 00:12:50,890
‫y no son realmente interesantes para

290
00:12:50,890 --> 00:12:51,990
‫nosotros ahora.

291
00:12:51,990 --> 00:12:54,900
‫Lo que quería mostrarles es, por supuesto, que en

292
00:12:54,900 --> 00:12:57,520
‫este momento ya tenemos los recorridos, ¿de acuerdo?

293
00:12:57,520 --> 00:13:02,450
‫Tenemos nueve recorridos, así que echémosle un vistazo.

294
00:13:02,450 --> 00:13:06,000
‫Y se ve un poco extraño aquí, así que para tener

295
00:13:06,000 --> 00:13:10,480
‫acceso a los valores reales, debemos hacer clic aquí, está bien, eso es

296
00:13:10,480 --> 00:13:11,880
‫un poco extraño.

297
00:13:11,880 --> 00:13:14,037
‫Pero funciona, por supuesto.

298
00:13:14,037 --> 00:13:18,110
‫Y entonces ves que, de hecho, nuestros tours ya están

299
00:13:18,110 --> 00:13:21,093
‫aquí y, por supuesto, también las características.

300
00:13:21,930 --> 00:13:24,650
‫Entonces puede ver aquí que las características son una

301
00:13:24,650 --> 00:13:27,670
‫instancia de la clase de características API tal como la definimos.

302
00:13:27,670 --> 00:13:31,130
‫Y ahí tenemos la consulta y la cadena de consulta.

303
00:13:31,130 --> 00:13:34,660
‫Genial, así es como echamos un vistazo a todas las variables.

304
00:13:34,660 --> 00:13:37,087
‫Y así es como funcionan las partes

305
00:13:37,087 --> 00:13:38,680
‫más importantes del depurador.

306
00:13:38,680 --> 00:13:41,750
‫Ahora, para aprender un poco sobre el proceso de depuración

307
00:13:41,750 --> 00:13:45,400
‫en sí, introduzcamos un error muy pequeño en nuestro código y luego

308
00:13:45,400 --> 00:13:48,300
‫echemos un vistazo a cómo podemos usar estas herramientas

309
00:13:48,300 --> 00:13:51,280
‫que tenemos aquí para, básicamente, echar un vistazo más

310
00:13:51,280 --> 00:13:52,790
‫profundo a nuestro código.

311
00:13:52,790 --> 00:13:55,410
‫Así que no voy a reanudar

312
00:13:55,410 --> 00:13:59,850
‫la ejecución omitida para ejecutar básicamente el resto del código, ¿de acuerdo?

313
00:13:59,850 --> 00:14:01,270
‫Así que eso debería hacerse ahora.

314
00:14:01,270 --> 00:14:03,670
‫Así que ahora aquí tenemos todas las respuestas.

315
00:14:03,670 --> 00:14:06,320
‫Como ven, tomó todo este tiempo aquí, es

316
00:14:06,320 --> 00:14:08,970
‫decir, tres minutos y 29 segundos, pero eso

317
00:14:08,970 --> 00:14:11,410
‫es solo porque detuvimos la ejecución durante

318
00:14:11,410 --> 00:14:12,313
‫tanto tiempo.

319
00:14:14,130 --> 00:14:15,130
‫Bueno.

320
00:14:15,130 --> 00:14:17,793
‫Ahora vayamos a nuestro código aquí.

321
00:14:19,160 --> 00:14:21,853
‫Cerremos lo que ya no necesitamos.

322
00:14:23,810 --> 00:14:28,410
‫Entonces, en realidad, en nuestro archivo de características de API, quiero

323
00:14:28,410 --> 00:14:32,603
‫introducir un pequeño error aquí en los campos de límite.

324
00:14:33,570 --> 00:14:36,080
‫Entonces, digamos que estábamos tratando de implementar este

325
00:14:36,080 --> 00:14:39,340
‫método aquí, pero en lugar de unirnos con un espacio

326
00:14:39,340 --> 00:14:41,790
‫aquí, nos olvidamos de ponerlo aquí.

327
00:14:41,790 --> 00:14:45,030
‫Entonces, digamos que nos unimos sin ningún

328
00:14:45,030 --> 00:14:49,010
‫espacio, y esto nos daría un resultado extraño, ¿verdad?

329
00:14:49,010 --> 00:14:50,633
‫Así que probémoslo.

330
00:14:52,650 --> 00:14:54,480
‫Entonces, digamos

331
00:14:56,350 --> 00:14:59,690
‫campos y que solo queríamos

332
00:14:59,690 --> 00:15:04,050
‫el nombre y la duración, ¿verdad?

333
00:15:04,050 --> 00:15:07,400
‫Ahora, antes de que pueda enviar esa solicitud, eliminemos el

334
00:15:07,400 --> 00:15:09,050
‫punto de interrupción aquí.

335
00:15:10,650 --> 00:15:11,483
‫¿Okey?

336
00:15:11,483 --> 00:15:14,410
‫Envió la solicitud, y ahora no obtenemos el

337
00:15:14,410 --> 00:15:16,073
‫nombre ni la duración.

338
00:15:16,920 --> 00:15:19,410
‫Así que imaginemos que es nuestro error

339
00:15:19,410 --> 00:15:23,510
‫ahora y ahora estamos tratando de averiguar por qué esto no funciona.

340
00:15:23,510 --> 00:15:24,520
‫¿Okey?

341
00:15:24,520 --> 00:15:26,490
‫Así que vayamos a nuestro depurador.

342
00:15:26,490 --> 00:15:28,470
‫Y sabemos que el error probablemente debe

343
00:15:28,470 --> 00:15:31,053
‫estar en algún lugar de nuestro método de campos límite.

344
00:15:32,090 --> 00:15:35,530
‫Entonces, básicamente, dejemos de ejecutar el código en

345
00:15:35,530 --> 00:15:37,320
‫este punto, ¿de acuerdo?

346
00:15:37,320 --> 00:15:40,880
‫Porque aquí es donde realmente se llamará a este método

347
00:15:40,880 --> 00:15:43,927
‫y desde aquí podemos ingresar esa función para

348
00:15:43,927 --> 00:15:45,130
‫ese método.

349
00:15:45,130 --> 00:15:46,100
‫¿Okey?

350
00:15:46,100 --> 00:15:48,883
‫Entonces, disparemos esa solicitud

351
00:15:50,240 --> 00:15:54,240
‫ahora, y ahora volvemos a nuestro depurador automáticamente.

352
00:15:54,240 --> 00:15:57,250
‫Entonces, en este punto, esta línea y esta línea y

353
00:15:57,250 --> 00:16:00,880
‫esta línea de código ya se han ejecutado, así que ahora usemos

354
00:16:00,880 --> 00:16:02,980
‫la herramienta de pasos, ¿de acuerdo?

355
00:16:02,980 --> 00:16:05,770
‫Lo que hará es que básicamente ejecutará la

356
00:16:05,770 --> 00:16:07,430
‫siguiente línea de código.

357
00:16:07,430 --> 00:16:09,810
‫Y en este caso, estará dentro del

358
00:16:09,810 --> 00:16:11,790
‫método de campos limitados.

359
00:16:11,790 --> 00:16:16,143
‫Así que da un paso, y luego se moverá directamente a esa función.

360
00:16:17,000 --> 00:16:20,670
‫Bien, echemos un vistazo a lo que tenemos aquí.

361
00:16:20,670 --> 00:16:24,070
‫Por ejemplo esto. La cadena de consulta es la duración de

362
00:16:24,070 --> 00:16:26,083
‫la coma del nombre, por lo que es correcto, ¿verdad?

363
00:16:26,990 --> 00:16:30,520
‫Bien, pasemos a la siguiente línea.

364
00:16:30,520 --> 00:16:33,600
‫Muy bien y aquí es donde realmente está

365
00:16:33,600 --> 00:16:35,263
‫sucediendo esta operación.

366
00:16:36,440 --> 00:16:38,460
‫Luego, a continuación.

367
00:16:38,460 --> 00:16:40,823
‫Echemos un vistazo a nuestras variables aquí.

368
00:16:42,500 --> 00:16:47,090
‫Y aquí ahora vemos el campo, y aquí tenemos nuestro error.

369
00:16:47,090 --> 00:16:47,930
‫¿Okey?

370
00:16:47,930 --> 00:16:50,810
‫Entonces, el problema es, por supuesto, que no tenemos

371
00:16:50,810 --> 00:16:53,170
‫espacio entre el nombre y la duración.

372
00:16:53,170 --> 00:16:54,830
‫Y por eso no funciona.

373
00:16:54,830 --> 00:16:58,410
‫Por supuesto, los campos se definen aquí,

374
00:16:58,410 --> 00:17:02,500
‫y así podemos encontrar nuestro error y corregirlo de inmediato.

375
00:17:02,500 --> 00:17:04,940
‫Así que recuerde que el paso agregado

376
00:17:04,940 --> 00:17:07,780
‫que hacemos aquí se refleja inmediatamente en el código.

377
00:17:07,780 --> 00:17:08,823
‫Así que

378
00:17:09,700 --> 00:17:12,560
‫dale un guardado, y luego lo hará de nuevo.

379
00:17:12,560 --> 00:17:14,233
‫Entonces puedo seguir caminando.

380
00:17:15,140 --> 00:17:17,270
‫Y ahora los campos son correctos.

381
00:17:17,270 --> 00:17:19,193
‫Así que nombra la duración del espacio.

382
00:17:20,780 --> 00:17:22,670
‫Luego, la siguiente línea de código.

383
00:17:22,670 --> 00:17:26,330
‫Y ahora ingresamos al método de selección en la consulta.

384
00:17:26,330 --> 00:17:28,420
‫Pero eso no nos interesa en absoluto, así que

385
00:17:28,420 --> 00:17:32,543
‫podemos decir "sal de la función actual". " ¿Okey?

386
00:17:32,543 --> 00:17:35,730
‫Entonces, esa selección que pensamos que estaba ejecutando

387
00:17:35,730 --> 00:17:37,880
‫esta función aquí, ¿de acuerdo?

388
00:17:37,880 --> 00:17:40,150
‫Pero, por supuesto, no estábamos interesados en

389
00:17:40,150 --> 00:17:43,080
‫eso, así que lo dejamos y pasamos a la siguiente línea.

390
00:17:43,080 --> 00:17:44,950
‫Así que ahora hemos

391
00:17:44,950 --> 00:17:48,330
‫devuelto esto, la siguiente línea y otra vez.

392
00:17:48,330 --> 00:17:51,373
‫Así que ahora volvemos a donde estábamos, pero en la siguiente línea.

393
00:17:52,590 --> 00:17:53,840
‫Así que sigamos haciendo eso.

394
00:17:55,040 --> 00:17:56,750
‫Así que ahora estamos en

395
00:17:56,750 --> 00:17:59,060
‫la página ocho, pero no estamos realmente interesados

396
00:17:59,060 --> 00:18:01,660
‫en esta, así que salgamos nuevamente de la función actual.

397
00:18:02,950 --> 00:18:05,190
‫Y ahora estamos aquí en la definición de tours.

398
00:18:05,190 --> 00:18:07,840
‫Lo cual en este punto aún no está hecho.

399
00:18:07,840 --> 00:18:10,610
‫Y entonces digamos de nuevo paso.

400
00:18:10,610 --> 00:18:14,070
‫Y ahora, en este punto, deberían definirse nuestros recorridos.

401
00:18:14,070 --> 00:18:17,950
‫Muy bien, tenemos nuestros nueve recorridos por aquí.

402
00:18:17,950 --> 00:18:19,250
‫Echemos un vistazo a ellos,

403
00:18:20,590 --> 00:18:21,810
‫y aquí están.

404
00:18:21,810 --> 00:18:23,670
‫Y en realidad tienen todos los

405
00:18:23,670 --> 00:18:26,880
‫datos, por lo que no solo los que definimos, sino que

406
00:18:26,880 --> 00:18:28,560
‫de hecho no los tienen.

407
00:18:28,560 --> 00:18:32,220
‫Entonces, realmente solo tenemos el nombre y la duración, por

408
00:18:32,220 --> 00:18:35,490
‫lo que la duración, el nombre y todos los

409
00:18:35,490 --> 00:18:36,980
‫demás están indefinidos.

410
00:18:36,980 --> 00:18:40,010
‫Entonces eso es solo porque limitamos una consulta solo a

411
00:18:40,010 --> 00:18:41,603
‫estos dos campos, ¿recuerdas?

412
00:18:42,500 --> 00:18:45,350
‫Ahora, lo que también quería mostrarles es aquí en

413
00:18:45,350 --> 00:18:49,370
‫las características, podemos echar un vistazo a nuestra consulta y aquí tenemos la propiedad

414
00:18:49,370 --> 00:18:52,240
‫de los campos, por ejemplo, donde vemos la duración establecida

415
00:18:52,240 --> 00:18:54,780
‫en uno y el nombre establecido en uno.

416
00:18:54,780 --> 00:18:58,300
‫Y esos son exactamente los dos nombres que seleccionamos.

417
00:18:58,300 --> 00:19:00,420
‫También tenemos estas opciones

418
00:19:00,420 --> 00:19:05,420
‫aquí, que en este punto están configuradas para crear menos uno.

419
00:19:05,690 --> 00:19:07,393
‫Y eso viene de aquí.

420
00:19:08,560 --> 00:19:10,500
‫Así que esto de aquí.

421
00:19:10,500 --> 00:19:13,360
‫Entonces, básicamente, lo que este método aquí, este método

422
00:19:13,360 --> 00:19:17,350
‫de ordenación va a hacer es agregar esta propiedad de ordenación aquí a

423
00:19:17,350 --> 00:19:18,860
‫estas opciones, ¿de acuerdo?

424
00:19:18,860 --> 00:19:22,110
‫Y luego también tenemos limit and skip que, por supuesto, vienen

425
00:19:22,110 --> 00:19:23,763
‫aquí desde la página ocho.

426
00:19:25,690 --> 00:19:26,523
‫¿Okey?

427
00:19:26,523 --> 00:19:29,160
‫Así que pensé que esto también era

428
00:19:29,160 --> 00:19:33,880
‫un poco interesante y sí, nuestro código ahora está realmente arreglado y sigamos

429
00:19:33,880 --> 00:19:34,713
‫ejecutando esto.

430
00:19:35,550 --> 00:19:38,630
‫Y entonces ahora deberíamos tener nuestro resultado correcto.

431
00:19:38,630 --> 00:19:41,510
‫Ahora aquí dice que no pudimos obtener ninguna respuesta, y

432
00:19:41,510 --> 00:19:44,593
‫eso se debe a que tardamos demasiado en arreglar nuestro código.

433
00:19:45,490 --> 00:19:47,280
‫Entonces obtuvimos un error al conectarnos.

434
00:19:47,280 --> 00:19:48,693
‫Pero si ahora lo volvemos a

435
00:19:49,530 --> 00:19:51,050
‫enviar, y ahora lo hacemos más rápido.

436
00:19:51,050 --> 00:19:53,650
‫O en realidad podríamos eliminar nuestro punto de interrupción por completo.

437
00:19:55,280 --> 00:19:56,780
‫Así que sigamos

438
00:19:56,780 --> 00:19:59,570
‫funcionando, retrocedamos y ahora obtenemos la duración

439
00:19:59,570 --> 00:20:01,570
‫y el nombre también.

440
00:20:01,570 --> 00:20:04,260
‫Eso es porque simplemente arreglamos nuestro

441
00:20:04,260 --> 00:20:06,550
‫código usando el depurador NDB.

442
00:20:06,550 --> 00:20:07,990
‫Que bien.

443
00:20:07,990 --> 00:20:10,840
‫Es una herramienta realmente asombrosa y útil

444
00:20:10,840 --> 00:20:13,260
‫que seguiremos usando durante el resto

445
00:20:13,260 --> 00:20:14,220
‫del curso.

446
00:20:14,220 --> 00:20:17,530
‫Quizás no siempre, a veces es más rápido lanzar un

447
00:20:17,530 --> 00:20:19,540
‫registro de salida de la consola.

448
00:20:19,540 --> 00:20:22,350
‫Pero realmente, en algunos casos más complicados, me gusta

449
00:20:22,350 --> 00:20:24,253
‫usar este tipo de herramienta.

