﻿1
00:00:00,980 --> 00:00:03,100
‫Instructor: En este video, quiero refactorizar

2
00:00:03,100 --> 00:00:06,510
‫muy rápidamente las características de la API que hemos

3
00:00:06,510 --> 00:00:08,620
‫implementado en las últimas conferencias.

4
00:00:08,620 --> 00:00:11,760
‫Ahora, esto no es solo para hacer nuestro código un poco

5
00:00:11,760 --> 00:00:15,000
‫más limpio, también es para hacerlo más modular y más reutilizable en

6
00:00:15,000 --> 00:00:15,913
‫el futuro.

7
00:00:17,290 --> 00:00:20,430
‫Entonces, ahora mismo, tenemos todo este código

8
00:00:20,430 --> 00:00:25,050
‫para las características que construimos antes en esta función getALLTours, ¿verdad?

9
00:00:25,050 --> 00:00:26,860
‫Y esto se ve un poco desordenado.

10
00:00:26,860 --> 00:00:30,160
‫Es un poco difícil de entender, ¿de acuerdo?

11
00:00:30,160 --> 00:00:33,900
‫Y también imagine que quisiéramos utilizar estas mismas funciones para

12
00:00:33,900 --> 00:00:35,010
‫otro recurso.

13
00:00:35,010 --> 00:00:38,250
‫Por ejemplo, para los usuarios o, posteriormente, para las reseñas.

14
00:00:38,250 --> 00:00:40,910
‫No sería muy práctico, básicamente, copiar el

15
00:00:40,910 --> 00:00:43,300
‫código de aquí y usarlo, luego,

16
00:00:43,300 --> 00:00:45,670
‫en los otros recursos, ¿no?

17
00:00:45,670 --> 00:00:47,360
‫Entonces, lo que voy a

18
00:00:47,360 --> 00:00:50,340
‫hacer es, ahora, crear una clase en la que agregaré

19
00:00:50,340 --> 00:00:54,070
‫un método para cada una de estas características o funcionalidades de la API,

20
00:00:54,070 --> 00:00:55,500
‫como también podría llamarlas.

21
00:00:55,500 --> 00:00:56,900
‫¿Está bien?

22
00:00:56,900 --> 00:00:59,906
‫Entonces, sigamos adelante y hagamos eso aquí y

23
00:00:59,906 --> 00:01:02,950
‫lo haré aquí, por ahora, luego, más adelante,

24
00:01:02,950 --> 00:01:05,750
‫lo exportaré a su propio archivo,

25
00:01:05,750 --> 00:01:08,810
‫básicamente, para crear un módulo reutilizable que podamos

26
00:01:08,810 --> 00:01:11,760
‫, más tarde, importe a otros controladores.

27
00:01:11,760 --> 00:01:12,960
‫¿Está bien?

28
00:01:12,960 --> 00:01:16,663
‫Entonces, clase, y lo llamo APIFeatures.

29
00:01:19,260 --> 00:01:20,093
‫Está bien.

30
00:01:21,720 --> 00:01:24,510
‫Luego, comenzamos con nuestra función constructora y recordamos

31
00:01:24,510 --> 00:01:26,840
‫que esta es la función

32
00:01:26,840 --> 00:01:29,990
‫que se llama automáticamente tan pronto como creamos un

33
00:01:29,990 --> 00:01:33,070
‫nuevo objeto fuera de esta clase, de acuerdo.

34
00:01:33,070 --> 00:01:36,830
‫Ahora bien, ¿qué es lo que realmente quiero en estas funciones de API?

35
00:01:36,830 --> 00:01:41,090
‫De hecho, voy a analizar dos variables aquí, ¿de acuerdo?

36
00:01:41,090 --> 00:01:45,962
‫Entonces, la consulta de mangosta y también la queryString que obtenemos

37
00:01:45,962 --> 00:01:47,323
‫de express.

38
00:01:48,410 --> 00:01:51,420
‫Entonces, básicamente, viniendo de la ruta, está bien.

39
00:01:51,420 --> 00:01:53,490
‫Así que eso es a lo que normalmente

40
00:01:53,490 --> 00:01:56,760
‫tenemos acceso en el req. consulta, está bien.

41
00:01:56,760 --> 00:01:59,780
‫Ahora, nuevamente, estoy pasando la consulta aquí porque no

42
00:01:59,780 --> 00:02:03,110
‫quiero consultar dentro de esta clase porque luego rebotaría esta

43
00:02:03,110 --> 00:02:06,040
‫clase en el recurso del recorrido pero, nuevamente, quiero

44
00:02:06,040 --> 00:02:08,903
‫que esto sea lo más reutilizable posible.

45
00:02:10,690 --> 00:02:11,523
‫Está bien.

46
00:02:11,523 --> 00:02:14,080
‫Entonces, lo que solemos hacer en esta

47
00:02:14,080 --> 00:02:18,490
‫función constructora es decir esto. consulta es igual a la consulta que obtuvimos

48
00:02:18,490 --> 00:02:21,480
‫como argumento y luego esto. queryString

49
00:02:25,130 --> 00:02:27,890
‫es igual a queryString.

50
00:02:27,890 --> 00:02:28,723
‫¿Okey?

51
00:02:28,723 --> 00:02:32,490
‫Una función constructora muy simple y muy típica.

52
00:02:32,490 --> 00:02:35,580
‫Y ahora, como mencioné, voy a crear un

53
00:02:35,580 --> 00:02:39,313
‫método para cada una de las funciones, comenzando con filter.

54
00:02:41,860 --> 00:02:42,693
‫Está bien.

55
00:02:42,693 --> 00:02:46,490
‫Y entonces, sigamos adelante y cortemos el código desde aquí.

56
00:02:46,490 --> 00:02:49,130
‫O, en realidad, lo voy a copiar

57
00:02:49,130 --> 00:02:52,180
‫y lo comentan, para que no haga ningún daño accidental.

58
00:02:52,180 --> 00:02:53,710
‫Entonces, copie el

59
00:02:55,350 --> 00:02:57,120
‫comentario y colóquelo aquí.

60
00:02:57,120 --> 00:02:59,450
‫Entonces, un par de cosas que debemos cambiar.

61
00:02:59,450 --> 00:03:03,350
‫Primero, solicítelo. La consulta no estará disponible dentro

62
00:03:03,350 --> 00:03:04,830
‫de esta clase.

63
00:03:04,830 --> 00:03:07,250
‫Y entonces, es por eso que en realidad analizamos en queryString.

64
00:03:07,250 --> 00:03:09,930
‫Y entonces, esto de aquí será reemplazado

65
00:03:09,930 --> 00:03:11,623
‫por esto. queryString.

66
00:03:13,490 --> 00:03:14,323
‫¿Okey?

67
00:03:14,323 --> 00:03:16,450
‫Entonces, nuevamente, esto es solo Javascript básico.

68
00:03:16,450 --> 00:03:20,260
‫En realidad, no tiene nada que ver con Note o Express en absoluto.

69
00:03:20,260 --> 00:03:24,760
‫Entonces el resto aquí está bien, pero esto aquí no está bien en absoluto.

70
00:03:24,760 --> 00:03:29,340
‫Por lo tanto, no quiero consultar el recorrido directamente aquí, recuerde, sino

71
00:03:29,340 --> 00:03:32,170
‫que simplemente quiero agregar este hallazgo a

72
00:03:32,170 --> 00:03:34,650
‫la consulta que ya tenemos.

73
00:03:34,650 --> 00:03:37,147
‫Así que esto. consulta. encontrar

74
00:03:40,560 --> 00:03:43,763
‫y entonces, eso será esto.

75
00:03:45,010 --> 00:03:45,860
‫¿Está bien?

76
00:03:45,860 --> 00:03:47,800
‫Ahora, deshagámonos de esto.

77
00:03:47,800 --> 00:03:50,370
‫Y antes de que agreguemos más métodos aquí, sigamos

78
00:03:50,370 --> 00:03:52,870
‫adelante y usemos esta clase solo para que

79
00:03:52,870 --> 00:03:54,833
‫esto tenga más sentido para usted.

80
00:03:55,700 --> 00:03:56,533
‫¿Okey?

81
00:03:56,533 --> 00:03:58,653
‫Entonces, ¿cómo va a funcionar esto realmente?

82
00:03:59,890 --> 00:04:02,400
‫Y lo voy a hacer todo aquí al

83
00:04:02,400 --> 00:04:04,420
‫final aquí en Ejecutar consulta.

84
00:04:04,420 --> 00:04:05,350
‫¿Está bien?

85
00:04:05,350 --> 00:04:07,750
‫Entonces, lo que puedo hacer ahora es crear

86
00:04:07,750 --> 00:04:09,583
‫una variable llamada Características, por ejemplo.

87
00:04:12,450 --> 00:04:17,300
‫Y luego, desde aquí, crearé un nuevo objeto de características de API.

88
00:04:17,300 --> 00:04:18,160
‫¿Okey?

89
00:04:18,160 --> 00:04:21,560
‫Entonces, básicamente, crear una instancia de las características de esta API

90
00:04:21,560 --> 00:04:23,870
‫que luego se almacenarán en Características.

91
00:04:23,870 --> 00:04:26,600
‫Y esto aquí, entonces tendremos acceso a todos los

92
00:04:26,600 --> 00:04:29,380
‫métodos que vamos a definir en la definición de la clase.

93
00:04:29,380 --> 00:04:30,360
‫¿Okey?

94
00:04:30,360 --> 00:04:33,490
‫Entonces, recuerde, aquí, debemos pasar una consulta

95
00:04:33,490 --> 00:04:34,980
‫y la queryString.

96
00:04:34,980 --> 00:04:36,983
‫Entonces, la consulta, ¿cómo creamos una?

97
00:04:38,440 --> 00:04:41,580
‫Recuerda, es Tour. encontrar.

98
00:04:41,580 --> 00:04:45,040
‫Entonces, hay un objeto de consulta y ese es el

99
00:04:45,040 --> 00:04:48,010
‫que analizamos en esta clase y luego, por supuesto,

100
00:04:48,010 --> 00:04:52,410
‫el queryString que es req. consulta.

101
00:04:52,410 --> 00:04:54,990
‫Bien, ahora, en estas características aquí, recuerde,

102
00:04:54,990 --> 00:04:57,160
‫no tenemos acceso al filtro.

103
00:04:57,160 --> 00:05:00,153
‫Entonces, pongámoslo aquí después.

104
00:05:01,410 --> 00:05:04,070
‫Tan, . filtrar.

105
00:05:04,070 --> 00:05:05,570
‫Dale una oportunidad.

106
00:05:05,570 --> 00:05:07,750
‫Y así, así, vamos a ejecutar

107
00:05:07,750 --> 00:05:10,550
‫o codificar la funcionalidad de filtrado de API.

108
00:05:10,550 --> 00:05:12,760
‫Entonces, aquí, la siguiente línea es, por

109
00:05:12,760 --> 00:05:14,970
‫supuesto, no va a funcionar porque esta

110
00:05:14,970 --> 00:05:16,670
‫consulta aquí ya no existe.

111
00:05:16,670 --> 00:05:20,947
‫En cambio, lo que tenemos ahora son características. consulta, ¿verdad?

112
00:05:22,760 --> 00:05:24,960
‫Entonces, después de todo este procesamiento ahora, básicamente.

113
00:05:26,040 --> 00:05:29,530
‫Bien, ahora mismo, después de este filtro, esto. La consulta

114
00:05:29,530 --> 00:05:32,500
‫tendrá este nuevo método de búsqueda.

115
00:05:32,500 --> 00:05:37,310
‫De acuerdo, de nuevo, esto se almacena en este. consulta.

116
00:05:37,310 --> 00:05:39,910
‫Y, más adelante, tendremos todos estos otros métodos que, todos

117
00:05:39,910 --> 00:05:41,930
‫ellos, lo manipularán. consulta para

118
00:05:42,886 --> 00:05:45,729
‫que, al final, este. query es la

119
00:05:45,729 --> 00:05:47,620
‫consulta que queremos ejecutar.

120
00:05:47,620 --> 00:05:48,793
‫Así que, como aquí.

121
00:05:49,920 --> 00:05:53,800
‫Bien, al igual que aquí, siempre seguimos manipulando la

122
00:05:53,800 --> 00:05:55,130
‫variable de consulta.

123
00:05:55,130 --> 00:05:57,460
‫Seguimos agregando más y más métodos

124
00:05:57,460 --> 00:06:00,100
‫hasta que, luego, lo ejecutamos al final.

125
00:06:00,100 --> 00:06:02,530
‫Y aquí, estamos haciendo exactamente lo mismo.

126
00:06:02,530 --> 00:06:05,910
‫Simplemente estamos moviendo el código a todos estos métodos.

127
00:06:05,910 --> 00:06:06,743
‫¿Okey?

128
00:06:06,743 --> 00:06:09,900
‫Luego, al final, como dije, la consulta se almacenará dentro

129
00:06:09,900 --> 00:06:13,290
‫de esta propiedad aquí y, sí, ahí es donde nosotros, entonces,

130
00:06:13,290 --> 00:06:14,800
‫hacemos la espera y

131
00:06:14,800 --> 00:06:16,093
‫recuperamos los resultados.

132
00:06:17,360 --> 00:06:18,220
‫¿Está bien?

133
00:06:18,220 --> 00:06:21,763
‫De todos modos, sigamos moviéndonos aquí e implementemos la clasificación.

134
00:06:22,730 --> 00:06:24,913
‫Entonces, estoy copiando y comentando.

135
00:06:27,300 --> 00:06:32,003
‫Entonces, filtra y el siguiente se llama Ordenar.

136
00:06:34,030 --> 00:06:35,160
‫Está bien.

137
00:06:35,160 --> 00:06:38,510
‫Entonces, aquí nuevamente, necesitamos reemplazar la solicitud. consulta con

138
00:06:38,510 --> 00:06:41,013
‫esto. queryString, está bien.

139
00:06:43,455 --> 00:06:46,288
‫Y luego, la consulta es ahora esto. consulta.

140
00:06:47,510 --> 00:06:52,383
‫Así que pongamos estos cuatro en esto. consulta.

141
00:06:56,540 --> 00:06:59,950
‫Bien, ahora, el objetivo aquí es

142
00:06:59,950 --> 00:07:03,380
‫básicamente encadenar estos métodos aquí uno tras otro.

143
00:07:03,380 --> 00:07:05,340
‫Déjame mostrarte eso aquí.

144
00:07:05,340 --> 00:07:08,262
‫Así que tenemos filtro y luego, después de eso,

145
00:07:08,262 --> 00:07:10,253
‫queremos encadenar el método de clasificación.

146
00:07:12,730 --> 00:07:15,820
‫Ahora, en este momento, eso no va

147
00:07:15,820 --> 00:07:20,110
‫a funcionar realmente porque ¿a dónde estamos encadenando realmente este tipo?

148
00:07:20,110 --> 00:07:24,170
‫Entonces, básicamente, estamos tratando de basarnos en el resultado de esto, pero

149
00:07:24,170 --> 00:07:27,120
‫ahora mismo, ¿cuál es el resultado de esto?

150
00:07:27,120 --> 00:07:29,840
‫Bueno, en realidad no es nada porque

151
00:07:29,840 --> 00:07:32,840
‫este método de filtro aquí no devuelve nada, ¿verdad?

152
00:07:32,840 --> 00:07:35,460
‫Ahora, este fragmento de código aquí, por

153
00:07:35,460 --> 00:07:38,830
‫supuesto, devuelve el objeto que se acaba de crear y, entonces,

154
00:07:38,830 --> 00:07:41,560
‫podemos encadenar el método de filtro en eso.

155
00:07:41,560 --> 00:07:44,460
‫Pero el método de filtro, a su vez, no devuelve nada.

156
00:07:44,460 --> 00:07:47,910
‫Y entonces, en este punto, realmente no podemos llamar a una

157
00:07:47,910 --> 00:07:49,630
‫ordenación en el objeto, ¿verdad?

158
00:07:49,630 --> 00:07:51,510
‫Entonces, la solución simple para eso,

159
00:07:51,510 --> 00:07:55,033
‫y tal vez lo haya hecho antes en algún momento de su

160
00:07:56,520 --> 00:07:58,853
‫código, es que ahora tenemos que devolver esto.

161
00:08:01,120 --> 00:08:06,103
‫Entonces, devuelva esto y esto es simplemente el objeto completo, ¿de acuerdo?

162
00:08:07,252 --> 00:08:09,723
‫Y lo mismo, entonces, aquí abajo.

163
00:08:11,790 --> 00:08:13,570
‫Entonces, devuelve esto.

164
00:08:13,570 --> 00:08:17,360
‫Para, nuevamente, devolver el objeto completo que, por supuesto, luego

165
00:08:17,360 --> 00:08:20,530
‫tiene acceso a estos otros métodos para que

166
00:08:20,530 --> 00:08:22,493
‫podamos, luego, llamarlos allí.

167
00:08:23,610 --> 00:08:24,443
‫¿Está bien?

168
00:08:25,690 --> 00:08:28,643
‫Entonces, el siguiente es el límite.

169
00:08:34,000 --> 00:08:36,150
‫Y voy a llamar a este campo limitFields.

170
00:08:39,680 --> 00:08:41,340
‫Y eso es porque

171
00:08:41,340 --> 00:08:43,710
‫todos estos métodos tendrán estos verbos como nombres.

172
00:08:43,710 --> 00:08:47,240
‫Entonces es filtrar, ordenar, limitar y el paginado

173
00:08:47,240 --> 00:08:48,640
‫será el siguiente.

174
00:08:49,870 --> 00:08:53,730
‫Entonces, nuevamente, req. consulta es ahora esto. queryString y query

175
00:08:57,649 --> 00:09:00,399
‫aquí es ahora esto. consulta.

176
00:09:04,494 --> 00:09:05,327
‫¿Está bien?

177
00:09:08,196 --> 00:09:11,196
‫Devuelve esto y esto no es correcto.

178
00:09:14,290 --> 00:09:17,123
‫De acuerdo, y finalmente, la paginación.

179
00:09:18,490 --> 00:09:19,873
‫Copiar, comentar.

180
00:09:25,020 --> 00:09:26,413
‫Entonces, pagina.

181
00:09:29,770 --> 00:09:31,650
‫Devuelva esto y, por supuesto, debemos

182
00:09:31,650 --> 00:09:39,187
‫reemplazar estos req. consulta esto.

183
00:09:39,187 --> 00:09:39,187
‫queryString.

184
00:09:39,187 --> 00:09:41,610
‫Y luego aquí, como antes, va

185
00:09:41,610 --> 00:09:44,890
‫a ser esto. consulta.

186
00:09:44,890 --> 00:09:47,770
‫Y me acabo de dar cuenta de que

187
00:09:47,770 --> 00:09:51,040
‫allí arriba, en el primer método, no hicimos esto aquí.

188
00:09:51,040 --> 00:09:54,560
‫Entonces, simplemente dijimos esto. consulta y

189
00:09:54,560 --> 00:09:57,080
‫luego agregó el hallazgo allí.

190
00:09:57,080 --> 00:09:59,190
‫Pero luego, por supuesto, necesitamos

191
00:09:59,190 --> 00:10:01,700
‫guardarlo en esta propiedad de consulta.

192
00:10:01,700 --> 00:10:03,593
‫Está bien, y entonces, me olvidé de eso.

193
00:10:04,650 --> 00:10:06,610
‫Y tenemos un error aquí.

194
00:10:06,610 --> 00:10:08,280
‫Muy bien, eso realmente no importa

195
00:10:08,280 --> 00:10:09,690
‫aquí en este momento.

196
00:10:09,690 --> 00:10:13,170
‫O, en realidad, lo hace porque esta línea de código aquí

197
00:10:13,170 --> 00:10:15,910
‫está realmente en nuestro método de paginación.

198
00:10:15,910 --> 00:10:17,490
‫Así que vayamos allí.

199
00:10:17,490 --> 00:10:19,720
‫Y, de hecho, quería hablarte

200
00:10:19,720 --> 00:10:21,210
‫de esto aquí.

201
00:10:21,210 --> 00:10:24,350
‫Porque, si lo piensas bien, solicitar la siguiente

202
00:10:24,350 --> 00:10:27,740
‫página, que tiene resultado cero, no es realmente un error.

203
00:10:27,740 --> 00:10:30,852
‫El hecho de que no existan resultados es suficiente

204
00:10:30,852 --> 00:10:34,900
‫para que el usuario se dé cuenta de que, básicamente, la página

205
00:10:34,900 --> 00:10:36,660
‫solicitada no contiene ningún dato.

206
00:10:36,660 --> 00:10:39,450
‫Entonces, realmente no necesitamos un error en esta situación.

207
00:10:39,450 --> 00:10:42,933
‫Y entonces, continuaré y eliminaré todo este código.

208
00:10:43,940 --> 00:10:45,430
‫¿Okey?

209
00:10:45,430 --> 00:10:47,600
‫Así que déjame guardarlo ahora aquí.

210
00:10:47,600 --> 00:10:49,963
‫Y ahora, por supuesto, el error se ha ido.

211
00:10:53,800 --> 00:10:56,950
‫Y aquí, también tenemos que seguir agregando

212
00:10:56,950 --> 00:10:58,770
‫estos otros métodos.

213
00:10:58,770 --> 00:11:02,577
‫Entonces, limitFields y. paginar.

214
00:11:05,160 --> 00:11:09,360
‫Guárdelo y, nuevamente, recuerde que todo este encadenamiento aquí solo

215
00:11:09,360 --> 00:11:12,180
‫funciona porque después de llamar a

216
00:11:12,180 --> 00:11:15,420
‫cada uno de estos métodos, siempre devolvemos esto.

217
00:11:15,420 --> 00:11:18,800
‫Y este es el objeto en sí que tiene acceso

218
00:11:18,800 --> 00:11:21,410
‫a cada uno de estos métodos aquí,

219
00:11:21,410 --> 00:11:24,640
‫lo que hace posible encadenarlos como lo tenemos aquí.

220
00:11:24,640 --> 00:11:26,860
‫Bien, entonces, solo para recapitular:

221
00:11:26,860 --> 00:11:31,040
‫estamos creando un nuevo objeto de la clase de características API.

222
00:11:31,040 --> 00:11:33,960
‫Allí, estamos analizando un objeto de consulta

223
00:11:33,960 --> 00:11:37,240
‫y la cadena de consulta que proviene de express.

224
00:11:37,240 --> 00:11:38,400
‫¿Okey?

225
00:11:38,400 --> 00:11:41,180
‫Luego, en cada uno de estos cuatro métodos

226
00:11:41,180 --> 00:11:44,400
‫aquí que llamamos uno tras otro, básicamente, manipulamos la consulta.

227
00:11:44,400 --> 00:11:48,010
‫Seguimos agregando más métodos al igual que lo

228
00:11:48,010 --> 00:11:52,160
‫hemos estado haciendo aquí antes de hacer esta refactorización, ¿verdad?

229
00:11:52,160 --> 00:11:55,900
‫Entonces, seguimos agregando cosas a la consulta aquí hasta el final,

230
00:11:55,900 --> 00:11:59,040
‫y luego, al final, simplemente esperamos el resultado de esa

231
00:11:59,040 --> 00:12:02,070
‫consulta para que pueda regresar con todos los documentos

232
00:12:02,070 --> 00:12:04,210
‫que se seleccionaron, ¿de acuerdo?

233
00:12:04,210 --> 00:12:06,580
‫Y esa consulta ahora vive en características

234
00:12:06,580 --> 00:12:08,640
‫que son este objeto aquí.

235
00:12:08,640 --> 00:12:10,123
‫Entonces características. consulta.

236
00:12:11,330 --> 00:12:13,620
‫Está bien, espero que tenga sentido.

237
00:12:13,620 --> 00:12:17,960
‫Entonces, antes de hacer cualquier otra cosa, volvamos a

238
00:12:17,960 --> 00:12:20,090
‫Postman y probémoslo.

239
00:12:20,090 --> 00:12:23,500
‫Y podemos probarlo aquí mismo con esta ruta Top-5-barata

240
00:12:23,500 --> 00:12:25,650
‫porque, en realidad, detrás de

241
00:12:25,650 --> 00:12:29,030
‫escena, usa todas estas características de API, ¿verdad?

242
00:12:29,030 --> 00:12:32,240
‫Entonces, si lo envío, bueno, todavía funciona.

243
00:12:32,240 --> 00:12:33,763
‫Entonces eso es fantástico.

244
00:12:34,730 --> 00:12:38,823
‫Así que ciérrelo y déjeme guardarlo aquí.

245
00:12:40,490 --> 00:12:44,453
‫Entonces, obtenga los cinco mejores tours baratos.

246
00:12:49,220 --> 00:12:51,370
‫Y sí, lo dejaré ahí al final.

247
00:12:51,370 --> 00:12:53,763
‫Y ahora, justo aquí, hagamos algunas pruebas.

248
00:12:54,790 --> 00:12:58,373
‫Por ejemplo, elimine la ordenación, déjeme dejar el límite.

249
00:12:59,570 --> 00:13:02,260
‫Dificultad, duración, precio.

250
00:13:02,260 --> 00:13:04,170
‫Entonces, voy a dejar todo

251
00:13:04,170 --> 00:13:06,620
‫esto aquí solo para ver si todavía funciona.

252
00:13:06,620 --> 00:13:10,590
‫Y parece que todo sigue funcionando, ¿no?

253
00:13:10,590 --> 00:13:13,110
‫Estos son exactamente los mismos resultados que

254
00:13:13,110 --> 00:13:15,500
‫obtuvimos antes de nuestra refactorización.

255
00:13:15,500 --> 00:13:17,320
‫Entonces, genial, perfecto.

256
00:13:17,320 --> 00:13:20,530
‫Eso funcionó y, por lo tanto, eliminemos todo este código

257
00:13:20,530 --> 00:13:23,950
‫de aquí, lo que hace que nuestro controlador de ruta sea

258
00:13:23,950 --> 00:13:26,410
‫mucho más limpio, ¿no es así?

259
00:13:26,410 --> 00:13:30,840
‫Entonces, eso es mucho mejor, de verdad, es de día y de noche.

260
00:13:30,840 --> 00:13:31,800
‫¿Okey?

261
00:13:31,800 --> 00:13:34,210
‫Ahora, el siguiente paso es realmente

262
00:13:34,210 --> 00:13:38,500
‫seguir adelante y tomar todo este código, cortarlo y ponerlo en un

263
00:13:38,500 --> 00:13:41,700
‫nuevo archivo, así que básicamente es un nuevo módulo.

264
00:13:41,700 --> 00:13:44,720
‫De acuerdo, y para eso, voy a crear una nueva carpeta

265
00:13:44,720 --> 00:13:46,563
‫aquí a la que llamaré Utils.

266
00:13:47,420 --> 00:13:49,713
‫Eso significa, básicamente, servicios públicos.

267
00:13:51,010 --> 00:13:53,850
‫Y voy a agregar un par de cosas aquí

268
00:13:53,850 --> 00:13:55,503
‫durante el resto del curso.

269
00:13:57,060 --> 00:13:57,893
‫¿Okey?

270
00:13:57,893 --> 00:14:00,050
‫Entonces este

271
00:14:00,050 --> 00:14:05,050
‫se llamará APIFeatures. js y con una F mayúscula aquí.

272
00:14:09,430 --> 00:14:10,263
‫¿Está bien?

273
00:14:10,263 --> 00:14:13,621
‫Entonces, aquí va nuestra clase y, al

274
00:14:13,621 --> 00:14:17,823
‫final, hacemos un módulo. exportaciones de esta clase.

275
00:14:20,040 --> 00:14:21,800
‫Entonces, nada nuevo en este momento.

276
00:14:21,800 --> 00:14:24,140
‫Guardarlo, cerrarlo y

277
00:14:24,140 --> 00:14:27,073
‫ahora, aquí, podemos solicitarlo.

278
00:14:28,147 --> 00:14:30,730
‫Const APIFeatures luego requieren.

279
00:14:35,980 --> 00:14:38,490
‫Luego, debemos mover una carpeta

280
00:14:38,490 --> 00:14:41,613
‫hacia arriba, luego a Utils y APIFeatures.

281
00:14:43,110 --> 00:14:44,210
‫¿Okey?

282
00:14:44,210 --> 00:14:45,313
‫Una prueba más.

283
00:14:48,010 --> 00:14:51,000
‫Y está tomando algo de tiempo, y aquí vamos.

284
00:14:51,000 --> 00:14:53,760
‫Hermoso, eso es realmente hermoso.

285
00:14:53,760 --> 00:14:57,720
‫Ahora, si volvemos a crear otro recurso, por ejemplo,

286
00:14:57,720 --> 00:15:00,280
‫para los usuarios, será muy fácil

287
00:15:00,280 --> 00:15:02,630
‫incorporar esta misma funcionalidad.

288
00:15:02,630 --> 00:15:06,110
‫Todo lo que tendremos que hacer es solicitar este archivo y

289
00:15:06,110 --> 00:15:08,680
‫luego, básicamente, hacer lo mismo que aquí.

290
00:15:08,680 --> 00:15:11,000
‫O tal vez, en ese caso, ni siquiera

291
00:15:11,000 --> 00:15:14,040
‫queremos tener esta capacidad de clasificación o no queremos tener la

292
00:15:14,040 --> 00:15:17,140
‫capacidad de filtrado y luego, todo lo que tenemos que hacer

293
00:15:17,140 --> 00:15:19,440
‫es simplemente eliminar esta línea de código.

294
00:15:19,440 --> 00:15:21,680
‫Y luego, como por arte de

295
00:15:21,680 --> 00:15:23,280
‫magia, solo hará estas

296
00:15:23,280 --> 00:15:25,810
‫tres funcionalidades o estas tres características, está bien.

297
00:15:25,810 --> 00:15:27,890
‫Y eso es realmente genial.

298
00:15:27,890 --> 00:15:29,630
‫Espero que puedas ver el

299
00:15:29,630 --> 00:15:33,353
‫valor de esto y, sí, estoy muy contento con este resultado.

