﻿1
00:00:01,330 --> 00:00:02,860
‫Instructor: Otra característica pequeña

2
00:00:02,860 --> 00:00:04,910
‫y agradable que podemos agregar a una

3
00:00:04,910 --> 00:00:08,070
‫API es proporcionar una ruta de alias a una solicitud que

4
00:00:08,070 --> 00:00:09,660
‫puede ser muy popular, por lo

5
00:00:09,660 --> 00:00:11,963
‫que es posible que se solicite todo el tiempo.

6
00:00:13,400 --> 00:00:15,260
‫Y, por ejemplo, es

7
00:00:15,260 --> 00:00:17,790
‫posible que deseemos proporcionar una ruta específicamente

8
00:00:17,790 --> 00:00:20,203
‫para los cinco mejores tours económicos.

9
00:00:21,324 --> 00:00:23,530
‫Entonces, si usáramos nuestra ruta regular aquí

10
00:00:23,530 --> 00:00:25,530
‫con los filtros y con todas

11
00:00:25,530 --> 00:00:26,580
‫las características

12
00:00:26,580 --> 00:00:29,930
‫que ya tenemos, la solicitud se vería un poco así.

13
00:00:29,930 --> 00:00:32,090
‫Así que, superemos todo esto.

14
00:00:32,090 --> 00:00:34,510
‫Entonces, los cinco mejores y más baratos tours.

15
00:00:34,510 --> 00:00:37,340
‫Entonces, eso significa que tenemos un límite de

16
00:00:39,495 --> 00:00:42,663
‫cinco y luego ordenaremos por calificaciones y por precio.

17
00:00:44,300 --> 00:00:47,640
‫Entonces, ordena y luego la

18
00:00:47,640 --> 00:00:52,640
‫calificación promedio, y descendiendo, menos las calificaciones promedio.

19
00:00:54,110 --> 00:00:56,750
‫Y, en caso de que tengan el mismo promedio,

20
00:00:56,750 --> 00:00:59,270
‫entonces queremos el precio más barato posible.

21
00:00:59,270 --> 00:01:02,353
‫Entonces, clasificaremos también por precio.

22
00:01:03,610 --> 00:01:06,060
‫Echemos un vistazo rápido a los resultados.

23
00:01:06,060 --> 00:01:08,163
‫Y, de hecho, tenemos cinco recorridos aquí.

24
00:01:09,670 --> 00:01:12,560
‫Y Postman vuelve a hacer este desplazamiento.

25
00:01:12,560 --> 00:01:18,640
‫Entonces, tenemos tours con 4. 9, 4.

26
00:01:18,640 --> 00:01:18,640
‫9, 4.

27
00:01:18,640 --> 00:01:20,553
‫9 de nuevo, 4. 8 y 4. 7.

28
00:01:22,250 --> 00:01:27,060
‫Entonces, estos son en realidad nuestros cinco mejores y más baratos tours.

29
00:01:27,060 --> 00:01:29,150
‫Si dijéramos más barato y mejor,

30
00:01:29,150 --> 00:01:32,270
‫bueno, entonces quizás tendríamos que ordenar primero por precio porque

31
00:01:32,270 --> 00:01:34,580
‫algunos de ellos no son realmente baratos.

32
00:01:34,580 --> 00:01:36,320
‫Por ejemplo, este.

33
00:01:36,320 --> 00:01:40,180
‫Pero, seleccionamos, primero, el promedio.

34
00:01:40,180 --> 00:01:43,160
‫Entonces, ordenamos primero por el promedio más alto

35
00:01:43,160 --> 00:01:46,700
‫y, solo luego, en caso de empate, básicamente, solo entonces,

36
00:01:46,700 --> 00:01:47,900
‫por el precio.

37
00:01:49,120 --> 00:01:51,340
‫Ahora, digamos que esta es una solicitud que

38
00:01:51,340 --> 00:01:53,350
‫se hace todo el tiempo y

39
00:01:53,350 --> 00:01:55,060
‫queremos brindar una ruta que

40
00:01:55,060 --> 00:01:57,453
‫sea simple y fácil de memorizar para el usuario.

41
00:01:58,670 --> 00:02:02,110
‫Entonces, vayamos a nuestra aplicación e intentemos implementar eso.

42
00:02:02,110 --> 00:02:06,330
‫Y vamos a empezar en sus rutas, así que recorra el router.

43
00:02:06,330 --> 00:02:08,703
‫Y luego necesitamos crear una nueva ruta.

44
00:02:09,550 --> 00:02:12,390
‫Y hagámoslo aquí, en la parte superior.

45
00:02:12,390 --> 00:02:16,913
‫Entonces, enrutador. ruta.

46
00:02:18,650 --> 00:02:21,370
‫Y entonces, ¿cómo vamos a llamar a esta ruta?

47
00:02:21,370 --> 00:02:25,293
‫Bueno, digamos top-5-barato.

48
00:02:26,590 --> 00:02:30,010
‫Entonces, un nombre bastante simple, pero funcionará.

49
00:02:30,010 --> 00:02:31,810
‫Y luego, en realidad

50
00:02:31,810 --> 00:02:34,103
‫solo queremos obtener solicitudes para esta ruta.

51
00:02:35,170 --> 00:02:37,480
‫Entonces, ahora es el momento de pensar.

52
00:02:37,480 --> 00:02:41,370
‫¿Cómo implementaremos esta funcionalidad?

53
00:02:41,370 --> 00:02:43,530
‫Bueno, en esencia, lo

54
00:02:43,530 --> 00:02:47,273
‫que queremos es tener todos los recorridos como aquí.

55
00:02:48,210 --> 00:02:51,070
‫Entonces, déjeme seguir adelante y comenzar a copiar

56
00:02:51,070 --> 00:02:52,930
‫y pegar eso aquí.

57
00:02:52,930 --> 00:02:56,320
‫Entonces, realmente todavía queremos usar esta función aquí porque

58
00:02:56,320 --> 00:02:57,740
‫realmente no tiene

59
00:02:57,740 --> 00:03:00,900
‫sentido reescribir toda la lógica que está allí.

60
00:03:00,900 --> 00:03:04,010
‫Pero, antes de que podamos llamar a esta ruta ender, básicamente

61
00:03:04,010 --> 00:03:06,690
‫queremos rellenar previamente algunos de los campos en la

62
00:03:06,690 --> 00:03:07,833
‫cadena de consulta.

63
00:03:08,970 --> 00:03:10,340
‫Entonces, ya sabemos

64
00:03:10,340 --> 00:03:13,590
‫que nuestra cadena de consulta debería verse así.

65
00:03:13,590 --> 00:03:16,370
‫Y, de hecho, podemos agregar algunas cosas más aquí.

66
00:03:16,370 --> 00:03:18,070
‫Pero, en esencia, nuestra cadena

67
00:03:18,070 --> 00:03:19,970
‫de consulta tiene que tener este aspecto.

68
00:03:19,970 --> 00:03:23,100
‫Entonces, la solución será ejecutar un middleware

69
00:03:23,100 --> 00:03:26,163
‫antes de ejecutar este controlador getAllTours.

70
00:03:27,080 --> 00:03:28,760
‫Y entonces, esa función

71
00:03:28,760 --> 00:03:31,843
‫de middleware manipulará el objeto de consulta que está entrando.

72
00:03:33,010 --> 00:03:35,210
‫Y entonces, este es

73
00:03:35,210 --> 00:03:38,150
‫otro ejemplo realmente bueno de usar middleware

74
00:03:38,150 --> 00:03:41,100
‫porque realmente necesita familiarizarse y acostumbrarse a

75
00:03:41,100 --> 00:03:44,150
‫este concepto de usar middleware estratégicamente para cambiar

76
00:03:44,150 --> 00:03:47,123
‫el objeto de solicitud cuando lo necesitemos.

77
00:03:48,690 --> 00:03:52,100
‫Entonces, agreguemos aquí.

78
00:03:52,100 --> 00:03:53,920
‫Entonces, tourController.

79
00:03:53,920 --> 00:03:55,150
‫Y luego,

80
00:03:55,150 --> 00:03:57,630
‫la función de middleware que crearemos en

81
00:03:57,630 --> 00:03:59,733
‫un segundo, que se llamará aliasTopTours.

82
00:04:05,060 --> 00:04:08,820
‫Entonces, copiemos ese nombre, pasemos al tourController y lo

83
00:04:08,820 --> 00:04:11,843
‫pondré aquí en la parte superior.

84
00:04:14,100 --> 00:04:15,217
‫Entonces, exportaciones. luego solicitud, respuesta

85
00:04:17,370 --> 00:04:19,823
‫y cuál es el tercer argumento que

86
00:04:21,650 --> 00:04:22,600
‫necesitamos

87
00:04:22,600 --> 00:04:24,030
‫en el middleware, ¿recuerdas?

88
00:04:24,030 --> 00:04:27,180
‫Y sé que la sección Express ya está un

89
00:04:27,180 --> 00:04:30,700
‫poco lejos en este punto, pero espero que recuerden que el

90
00:04:30,700 --> 00:04:33,280
‫tercer argumento aquí debe ser el siguiente.

91
00:04:33,280 --> 00:04:36,230
‫Entonces, para llamar al siguiente middleware que

92
00:04:36,230 --> 00:04:38,970
‫está en la pila de middleware.

93
00:04:38,970 --> 00:04:40,520
‫Dale una oportunidad.

94
00:04:45,600 --> 00:04:46,640
‫Y entonces, este error debería desaparecer.

95
00:04:46,640 --> 00:04:49,203
‫Entonces, hagamos lo que dijimos que haríamos.

96
00:04:53,554 --> 00:04:55,950
‫Entonces, básicamente para manipular

97
00:04:55,950 --> 00:04:58,870
‫el objeto de consulta para que cuando

98
00:04:58,870 --> 00:05:01,960
‫llegue al controlador getAllTours, ya sea diferente.

99
00:05:01,960 --> 00:05:03,423
‫Entonces, primero hagamos eso

100
00:05:04,270 --> 00:05:07,160
‫y luego echemos un vistazo a lo que sucede.

101
00:05:07,160 --> 00:05:08,783
‫Entonces, recuerde, el límite se establecerá en cinco.

102
00:05:10,010 --> 00:05:13,280
‫Y recuerde que todo son cadenas aquí, así que estoy

103
00:05:13,280 --> 00:05:15,320
‫configurando esto también como una cadena.

104
00:05:15,320 --> 00:05:17,370
‫Ahora, ¿qué más teníamos?

105
00:05:19,350 --> 00:05:20,703
‫Entonces, tenemos este

106
00:05:21,580 --> 00:05:25,200
‫tipo, así que copiemos esto aquí y digamos req. consulta. clasificar.

107
00:05:26,400 --> 00:05:30,623
‫Debería ser esto.

108
00:05:32,247 --> 00:05:35,050
‫Y luego, también podemos especificar

109
00:05:35,050 --> 00:05:39,230
‫algunos campos para que el usuario no obtenga

110
00:05:39,230 --> 00:05:42,560
‫todos los campos que tenemos allí.

111
00:05:42,560 --> 00:05:43,660
‫Entonces, digamos

112
00:05:46,420 --> 00:05:49,033
‫que solo queremos el nombre, el precio, el

113
00:05:50,070 --> 00:05:52,973
‫promedio de calificaciones, el resumen y la dificultad.

114
00:05:54,570 --> 00:05:55,653
‫Guárdelo y ahora

115
00:05:58,650 --> 00:06:02,600
‫todo lo que necesitamos es lo siguiente; de lo contrario, este middleware se

116
00:06:02,600 --> 00:06:05,730
‫quedará atascado aquí para siempre y no podrá seguir adelante.

117
00:06:05,730 --> 00:06:07,043
‫Entonces, ahora averigüemos un poco

118
00:06:08,440 --> 00:06:10,420
‫mejor qué es lo que realmente va a pasar aquí.

119
00:06:10,420 --> 00:06:12,690
‫Entonces, tan pronto como alguien

120
00:06:12,690 --> 00:06:16,900
‫llegue a la ruta de los 5 mejores baratos, comenzaremos.

121
00:06:16,900 --> 00:06:17,733
‫El primer middleware que se ejecutará es aliasTopTours.

122
00:06:17,733 --> 00:06:21,470
‫Entonces, la función que acabamos de crear.

123
00:06:21,470 --> 00:06:23,433
‫Entonces, lo que esto va a

124
00:06:25,420 --> 00:06:27,060
‫hacer es establecer estas propiedades

125
00:06:27,060 --> 00:06:30,070
‫del objeto de consulta en estos valores que especificamos aquí.

126
00:06:30,070 --> 00:06:32,490
‫Básicamente, rellenar previamente partes del

127
00:06:32,490 --> 00:06:35,800
‫objeto de consulta antes de llegar al controlador getAllTours.

128
00:06:35,800 --> 00:06:39,453
‫Y así, tan pronto como llegamos a esta función, el objeto

129
00:06:40,720 --> 00:06:43,670
‫de consulta ya está precargado, incluso si el usuario

130
00:06:43,670 --> 00:06:46,080
‫no puso ninguno de estos parámetros en

131
00:06:46,080 --> 00:06:47,960
‫la cadena de consulta.

132
00:06:47,960 --> 00:06:49,963
‫Y entonces, en esencia, lo que estamos

133
00:06:51,230 --> 00:06:52,170
‫haciendo aquí es

134
00:06:52,170 --> 00:06:55,137
‫rellenar previamente la cadena de consulta para el usuario para que

135
00:06:55,137 --> 00:06:57,650
‫el usuario no tenga que hacerlo por su cuenta.

136
00:06:57,650 --> 00:06:59,083
‫Y entonces, sigamos adelante e intentemos esto.

137
00:07:01,024 --> 00:07:03,683
‫Entonces, estoy copiando esto.

138
00:07:04,780 --> 00:07:06,003
‫Y aquí no se trata de giras.

139
00:07:09,380 --> 00:07:11,090
‫Son los 5 mejores tours.

140
00:07:11,090 --> 00:07:14,463
‫Whoa, ¿qué está pasando aquí?

141
00:07:16,710 --> 00:07:18,620
‫Por alguna razón,

142
00:07:18,620 --> 00:07:21,960
‫no encuentra esta ruta, así que retrocedamos.

143
00:07:21,960 --> 00:07:23,360
‫Entonces, top-5-tours.

144
00:07:23,360 --> 00:07:25,013
‫Y entonces, aquí en la ruta, ah, está bien.

145
00:07:26,140 --> 00:07:28,720
‫Se llama top-5-cheap, así que

146
00:07:28,720 --> 00:07:30,690
‫mi error aquí.

147
00:07:30,690 --> 00:07:32,093
‫Entonces, barato, envíalo

148
00:07:33,440 --> 00:07:35,780
‫ahora, y aún no es correcto.

149
00:07:35,780 --> 00:07:38,123
‫Ah sí.

150
00:07:40,030 --> 00:07:41,110
‫Por supuesto, todavía tengo que poner los tours aquí, por supuesto.

151
00:07:41,110 --> 00:07:46,110
‫Entonces, estamos en el recurso de recorridos y todo el enrutador

152
00:07:46,140 --> 00:07:48,300
‫está montado en esta ruta

153
00:07:48,300 --> 00:07:50,210
‫de recorridos, recuérdelo.

154
00:07:50,210 --> 00:07:53,670
‫Y entonces, es en esos tours, ese tipo

155
00:07:53,670 --> 00:07:55,430
‫de mini aplicación,

156
00:07:55,430 --> 00:07:58,140
‫recuerda eso, donde creé esta ruta top-5-barata.

157
00:07:58,140 --> 00:08:00,723
‫Entonces, esperemos que funcione ahora.

158
00:08:01,790 --> 00:08:03,470
‫Y, de hecho, lo hace.

159
00:08:03,470 --> 00:08:04,703
‫Así que funcionó, es fantástico.

160
00:08:07,350 --> 00:08:11,030
‫Ahora, por supuesto, podríamos hacer muchas más rutas

161
00:08:11,030 --> 00:08:15,090
‫de alias aquí, pero eso no es realmente necesario.

162
00:08:15,090 --> 00:08:16,740
‫Realmente solo quería mostrarles

163
00:08:16,740 --> 00:08:19,400
‫el concepto, mostrarles que puede ser una

164
00:08:19,400 --> 00:08:21,630
‫buena característica para agregar a cualquier

165
00:08:21,630 --> 00:08:25,380
‫API y también quería, nuevamente, mostrarles el poder de los middlewares.

166
00:08:25,380 --> 00:08:27,933
‫Entonces, estamos hablando de Mongoose aquí, pero aún

167
00:08:29,160 --> 00:08:30,950
‫así, es muy importante

168
00:08:30,950 --> 00:08:34,360
‫seguir familiarizándose con los conceptos Express de los que hablamos antes.

169
00:08:34,360 --> 00:08:37,513
‫De todos modos, ahora hemos terminado con nuestras funciones de API.

170
00:08:39,040 --> 00:08:42,120
‫En el siguiente video, vamos a refactorizar rápidamente

171
00:08:42,120 --> 00:08:44,950
‫todo esto para hacer que todo el

172
00:08:44,950 --> 00:08:48,690
‫código sea un poco más modular y, por supuesto, mejor.

