﻿1
00:00:01,210 --> 00:00:03,670
‫Ponente: Sigamos ahora trabajando en nuestra API.

2
00:00:04,530 --> 00:00:06,620
‫En los próximos videos, implementaremos

3
00:00:06,620 --> 00:00:08,840
‫un par de características de API comunes

4
00:00:08,840 --> 00:00:12,440
‫que hacen que una API sea más fácil y agradable de

5
00:00:12,440 --> 00:00:14,950
‫usar para quien la vaya a utilizar.

6
00:00:14,950 --> 00:00:15,940
‫Y en

7
00:00:15,940 --> 00:00:17,963
‫esta conferencia, comenzaremos con el filtrado.

8
00:00:19,340 --> 00:00:22,830
‫Entonces, nuevamente, la primera característica que implementaremos es permitir

9
00:00:22,830 --> 00:00:26,000
‫que el usuario básicamente filtre datos usando una

10
00:00:26,000 --> 00:00:27,563
‫cadena de consulta.

11
00:00:28,890 --> 00:00:32,233
‫Permítanme decirles qué cadena de consulta usa Postman.

12
00:00:36,610 --> 00:00:39,993
‫Entonces, cerremos a todos estos chicos.

13
00:00:46,150 --> 00:00:47,683
‫Bien.

14
00:00:47,683 --> 00:00:50,350
‫En realidad, donde el filtrado tendrá sentido es aquí

15
00:00:50,350 --> 00:00:52,793
‫en esta ruta para obtener todos los recorridos.

16
00:00:53,750 --> 00:00:55,940
‫Porque, este es el que, como

17
00:00:55,940 --> 00:00:58,720
‫bien dice el nombre, se lleva todos los tours.

18
00:00:58,720 --> 00:01:02,370
‫Y aquí queremos permitir que el usuario filtre los datos, de modo

19
00:01:02,370 --> 00:01:04,840
‫que en lugar de obtener todos los

20
00:01:04,840 --> 00:01:08,123
‫datos, solo obtenga los datos que coincidan con el filtro.

21
00:01:09,340 --> 00:01:12,290
‫Así, básicamente podemos permitir que el usuario consulte los

22
00:01:12,290 --> 00:01:14,750
‫datos de una manera muy sencilla.

23
00:01:14,750 --> 00:01:16,480
‫Nuevamente, usando la cadena de consulta.

24
00:01:16,480 --> 00:01:18,850
‫Y la cadena de consulta se parece un poco a esto.

25
00:01:18,850 --> 00:01:20,340
‫Y estoy seguro de que lo has visto.

26
00:01:20,340 --> 00:01:23,120
‫Entonces, comenzamos con un signo de interrogación

27
00:01:23,120 --> 00:01:26,663
‫y luego simplemente podemos especificar algunos pares de valores de campo.

28
00:01:28,420 --> 00:01:30,360
‫Entonces, digamos que

29
00:01:30,360 --> 00:01:33,620
‫queríamos filtrar por una duración igual a cinco

30
00:01:33,620 --> 00:01:36,573
‫y, al mismo tiempo, una dificultad fácil.

31
00:01:40,500 --> 00:01:44,690
‫Entonces, podemos simplemente construir una cadena de consulta como esta.

32
00:01:44,690 --> 00:01:46,860
‫Entonces, nuevamente, comienza con este signo

33
00:01:46,860 --> 00:01:48,800
‫de interrogación, y luego

34
00:01:48,800 --> 00:01:51,723
‫podemos especificar tantos pares clave-valor usando este formato.

35
00:01:53,000 --> 00:01:54,860
‫Y ahora nuestra aplicación

36
00:01:54,860 --> 00:01:57,450
‫Postman reconoce esto y básicamente analiza

37
00:01:57,450 --> 00:02:00,420
‫esta cadena aquí y coloca la clave

38
00:02:00,420 --> 00:02:04,140
‫y los valores aquí en esta pestaña de Parámetros.

39
00:02:04,140 --> 00:02:06,963
‫Entonces también podríamos especificar la clave y los valores aquí.

40
00:02:07,890 --> 00:02:11,110
‫Entonces, digamos prueba, configúrelo en veintitrés, y verá aquí

41
00:02:11,110 --> 00:02:12,690
‫que realmente lo agregó

42
00:02:12,690 --> 00:02:14,483
‫a la cadena de consulta.

43
00:02:15,370 --> 00:02:18,740
‫Así que esa es una forma muy agradable de que Postman nos ayude aquí.

44
00:02:18,740 --> 00:02:21,150
‫Porque ahora podemos, por ejemplo, mientras hacemos

45
00:02:21,150 --> 00:02:24,260
‫las pruebas, podemos activarlos y desactivarlos y verá que

46
00:02:24,260 --> 00:02:25,610
‫la cadena de

47
00:02:25,610 --> 00:02:27,573
‫consulta aquí reacciona en consecuencia.

48
00:02:28,970 --> 00:02:32,940
‫De todos modos, ahora necesitamos una forma de acceder a estos datos que están

49
00:02:32,940 --> 00:02:35,883
‫en una cadena de consulta, en nuestra aplicación Express.

50
00:02:36,730 --> 00:02:39,210
‫Pero, afortunadamente para nosotros, eso es

51
00:02:39,210 --> 00:02:42,260
‫muy fácil, porque Express ya se encargó de eso.

52
00:02:42,260 --> 00:02:44,690
‫Así que esa es solo una de

53
00:02:44,690 --> 00:02:48,420
‫las muchas cosas que Express hace por nosotros para que el desarrollo

54
00:02:48,420 --> 00:02:50,563
‫de NodeJS sea mucho más rápido.

55
00:02:52,420 --> 00:02:55,170
‫Déjame mostrártelo aquí, de hecho en la consola.

56
00:02:57,810 --> 00:03:01,380
‫Entonces, estos datos están en una solicitud, lo que tiene sentido,

57
00:03:01,380 --> 00:03:04,013
‫y luego están en un campo llamado consulta.

58
00:03:04,980 --> 00:03:07,490
‫Por lo tanto, la consulta de puntos de solicitud debería

59
00:03:07,490 --> 00:03:10,630
‫proporcionarnos un objeto con un formato agradable con los datos de la

60
00:03:10,630 --> 00:03:11,730
‫cadena de consulta.

61
00:03:12,760 --> 00:03:13,593
‫Dale una oportunidad.

62
00:03:14,530 --> 00:03:16,630
‫Y tenga en cuenta cómo

63
00:03:16,630 --> 00:03:20,150
‫lo agregué a la función de controlador get all tours.

64
00:03:20,150 --> 00:03:22,800
‫Entonces, nuevamente, hacemos este tipo de filtrado en la

65
00:03:22,800 --> 00:03:25,323
‫ruta donde queremos obtener todos los recorridos.

66
00:03:27,140 --> 00:03:30,373
‫Probemos ahora con esta cadena de consulta exacta.

67
00:03:31,400 --> 00:03:32,920
‫Envió la solicitud.

68
00:03:32,920 --> 00:03:36,333
‫Y volviendo, aquí tenemos el objeto.

69
00:03:37,170 --> 00:03:40,420
‫De hecho, hagamos esto aquí más grande para

70
00:03:40,420 --> 00:03:41,720
‫que pueda ver.

71
00:03:41,720 --> 00:03:43,650
‫Eso no está funcionando realmente.

72
00:03:43,650 --> 00:03:45,820
‫Entonces, a veces sé que algunas personas no pueden

73
00:03:45,820 --> 00:03:47,630
‫ver la parte inferior de la pantalla.

74
00:03:47,630 --> 00:03:49,080
‫Déjame hacerlo de nuevo aquí.

75
00:03:51,280 --> 00:03:52,942
‫Y así, aquí vamos.

76
00:03:52,942 --> 00:03:55,990
‫Tenemos el objeto, que tiene la duración establecida en cinco

77
00:03:55,990 --> 00:03:58,200
‫y la dificultad establecida en fácil.

78
00:03:58,200 --> 00:04:00,460
‫Y entonces ve que Express,

79
00:04:00,460 --> 00:04:04,250
‫muy bien, analizó esa cadena en este objeto fácil de usar.

80
00:04:04,250 --> 00:04:06,330
‫Ahora, una cosa que noté aquí es que

81
00:04:06,330 --> 00:04:08,380
‫en realidad nos falta el registro

82
00:04:08,380 --> 00:04:10,440
‫que teníamos más fácilmente aquí en la consola.

83
00:04:10,440 --> 00:04:12,540
‫Echemos un vistazo a por qué está sucediendo eso.

84
00:04:15,431 --> 00:04:18,430
‫Entonces, por alguna razón, ahora tenemos la aplicación

85
00:04:18,430 --> 00:04:21,310
‫antes de leer la variable de entorno.

86
00:04:21,310 --> 00:04:24,113
‫De esa forma, la aplicación no tiene acceso a ellos.

87
00:04:25,010 --> 00:04:27,600
‫Pensé que lo había arreglado antes, pero por alguna

88
00:04:27,600 --> 00:04:29,300
‫razón está de vuelta ahora.

89
00:04:30,340 --> 00:04:32,390
‫Dale otro guardado aquí.

90
00:04:32,390 --> 00:04:33,690
‫Y lo intentaré de nuevo.

91
00:04:36,180 --> 00:04:38,933
‫Ahora recuperamos nuestro registro.

92
00:04:40,200 --> 00:04:43,750
‫Una solicitud de obtención a esta URL y luego con

93
00:04:43,750 --> 00:04:45,963
‫el resto de los datos aquí.

94
00:04:48,260 --> 00:04:50,600
‫De todos modos, ahora usemos

95
00:04:50,600 --> 00:04:53,200
‫esos datos para implementar nuestro filtrado.

96
00:04:53,200 --> 00:04:55,840
‫Pero antes de que podamos hacer eso, necesito decirles que

97
00:04:55,840 --> 00:04:58,440
‫en Mongoose, en realidad hay dos formas de escribir

98
00:04:58,440 --> 00:05:00,120
‫consultas de bases de datos.

99
00:05:00,120 --> 00:05:03,050
‫El primero es usar el objeto de filtro

100
00:05:03,050 --> 00:05:06,490
‫tal como lo hicimos en la sección de introducción de MongoDB.

101
00:05:06,490 --> 00:05:08,690
‫¿Derecha? ¿Recuérdalo?

102
00:05:08,690 --> 00:05:12,333
‫La segunda forma es utilizar algunos métodos especiales de Mongoose.

103
00:05:13,590 --> 00:05:16,505
‫Permítanme, muy rápidamente, mostrarles eso.

104
00:05:16,505 --> 00:05:19,420
‫Con el objeto de filtro, lo haríamos así.

105
00:05:19,420 --> 00:05:21,910
‫Comenzamos con el hallazgo aquí, y luego allí podemos

106
00:05:21,910 --> 00:05:23,570
‫pasar un objeto de filtro.

107
00:05:23,570 --> 00:05:25,900
‫Y eso ya lo mencioné antes.

108
00:05:25,900 --> 00:05:28,410
‫Nuevamente, funciona exactamente de la misma manera que

109
00:05:28,410 --> 00:05:30,650
‫con una consulta normal de MongoDB.

110
00:05:30,650 --> 00:05:33,160
‫Ahora podríamos decir que la duración lo

111
00:05:34,570 --> 00:05:35,657
‫estableció en cinco.

112
00:05:35,657 --> 00:05:36,663
‫Y

113
00:05:39,320 --> 00:05:42,253
‫luego, dificultad, ponlo fácil.

114
00:05:44,300 --> 00:05:47,150
‫Esa es exactamente la cadena de consulta que teníamos antes,

115
00:05:47,150 --> 00:05:48,960
‫y ahora la estoy codificando aquí

116
00:05:48,960 --> 00:05:50,860
‫solo para mostrarte las dos formas diferentes

117
00:05:50,860 --> 00:05:52,423
‫de escribir consultas en Mongoose.

118
00:05:53,318 --> 00:05:54,518
‫Probemos este.

119
00:05:58,220 --> 00:06:00,453
‫Ves que ahora, solo obtenemos dos resultados.

120
00:06:01,290 --> 00:06:03,193
‫Démosnos un poco de espacio aquí.

121
00:06:04,810 --> 00:06:05,760
‫Bien.

122
00:06:05,760 --> 00:06:08,870
‫Vemos los dos resultados y, de hecho,

123
00:06:08,870 --> 00:06:10,890
‫ambos tienen una duración

124
00:06:10,890 --> 00:06:15,890
‫de cinco, así que aquí y aquí, y ambos son fáciles.

125
00:06:15,930 --> 00:06:17,443
‫Fácil y sencillo.

126
00:06:18,350 --> 00:06:20,563
‫Entonces nuestro filtro funcionó bien.

127
00:06:21,675 --> 00:06:24,710
‫Esa es la primera forma de escribir una consulta.

128
00:06:24,710 --> 00:06:27,650
‫Solo de la forma normal a la que ya estamos acostumbrados,

129
00:06:27,650 --> 00:06:29,103
‫pero hay otra forma.

130
00:06:30,790 --> 00:06:32,993
‫Déjame mostrarte eso también.

131
00:06:37,570 --> 00:06:39,910
‫Nuevamente, comenzamos exactamente de la misma manera,

132
00:06:39,910 --> 00:06:41,690
‫pero luego la diferencia es

133
00:06:41,690 --> 00:06:44,150
‫que comenzamos a encadenar algún método especial de

134
00:06:44,150 --> 00:06:47,523
‫Mongoose para básicamente construir la consulta similar a esta que tenemos.

135
00:06:49,540 --> 00:06:50,563
‫Así decimos,

136
00:06:51,730 --> 00:06:52,563
‫donde

137
00:06:54,910 --> 00:06:55,780
‫la duración

138
00:06:58,840 --> 00:07:00,343
‫es igual a cinco.

139
00:07:01,810 --> 00:07:03,630
‫Entonces también, donde la

140
00:07:04,710 --> 00:07:06,180
‫dificultad, que debe

141
00:07:06,180 --> 00:07:08,023
‫estar entre comillas, es

142
00:07:11,420 --> 00:07:12,253
‫igual a

143
00:07:13,170 --> 00:07:14,003
‫fácil.

144
00:07:17,270 --> 00:07:19,620
‫Esta consulta aquí será exactamente la

145
00:07:19,620 --> 00:07:22,500
‫misma que esta, pero nuevamente, escrita usando

146
00:07:22,500 --> 00:07:24,740
‫métodos especiales de Mongoose.

147
00:07:24,740 --> 00:07:27,240
‫Y, por supuesto, hay muchos otros métodos.

148
00:07:27,240 --> 00:07:30,980
‫Por ejemplo, en lugar de iguales, podemos tener menos que, o

149
00:07:30,980 --> 00:07:34,060
‫igual, o solo menos que, o también puede ordenar

150
00:07:34,060 --> 00:07:37,520
‫los resultados o limitar el número de resultados, y realmente

151
00:07:37,520 --> 00:07:39,020
‫todo tipo de cosas.

152
00:07:41,057 --> 00:07:43,180
‫Seguro, usaremos algunos de ellos en

153
00:07:43,180 --> 00:07:44,743
‫los próximos dos videos.

154
00:07:46,050 --> 00:07:48,290
‫Esto puede parecerle un poco extraño aquí,

155
00:07:48,290 --> 00:07:51,303
‫pero en realidad es muy, muy útil en algunos casos.

156
00:07:52,530 --> 00:07:55,573
‫Solo para probar, inténtalo de nuevo con este.

157
00:07:57,010 --> 00:07:59,953
‫Y de hecho obtenemos nuestros mismos dos resultados.

158
00:08:02,735 --> 00:08:04,590
‫Ahora, déjame comentar este aquí.

159
00:08:04,590 --> 00:08:06,950
‫Lo dejaré aquí solo como

160
00:08:06,950 --> 00:08:10,300
‫referencia, porque ahora mismo, usaremos este método aquí.

161
00:08:10,300 --> 00:08:12,400
‫Y lo usaremos, porque de hecho,

162
00:08:12,400 --> 00:08:15,000
‫ya tenemos un objeto que se parece

163
00:08:15,000 --> 00:08:16,363
‫mucho a esto.

164
00:08:17,360 --> 00:08:20,300
‫Y esa es la consulta de puntos de solicitud.

165
00:08:20,300 --> 00:08:22,193
‫Si lo comparas, este objeto, con

166
00:08:23,228 --> 00:08:25,128
‫este objeto que ves aquí abajo, se

167
00:08:26,280 --> 00:08:28,173
‫ve exactamente igual que este.

168
00:08:30,120 --> 00:08:32,130
‫Para implementar un filtro muy

169
00:08:32,130 --> 00:08:37,130
‫simple, todo lo que tenemos que hacer en este caso es decir, req dot query.

170
00:08:37,150 --> 00:08:38,793
‫Intentémoslo una vez más.

171
00:08:39,730 --> 00:08:40,803
‫Deshazte de esto aquí.

172
00:08:42,650 --> 00:08:46,300
‫Y de hecho obtenemos exactamente los mismos dos resultados.

173
00:08:46,300 --> 00:08:50,223
‫Ahora intentemos solo con la dificultad configurada como fácil.

174
00:08:52,140 --> 00:08:53,993
‫Ahora obtenemos cuatro resultados.

175
00:08:55,280 --> 00:08:56,700
‫Todos ellos, por supuesto,

176
00:08:56,700 --> 00:08:58,463
‫tendrán la dificultad establecida en fácil.

177
00:09:00,540 --> 00:09:03,100
‫Nuestro filtro, nuestro filtro muy básico,

178
00:09:03,100 --> 00:09:04,880
‫ahora está funcionando.

179
00:09:04,880 --> 00:09:06,870
‫Ahora, el problema con esta

180
00:09:06,870 --> 00:09:09,650
‫implementación es que en realidad es demasiado simple.

181
00:09:09,650 --> 00:09:11,690
‫Eso es porque, más adelante, tendremos

182
00:09:11,690 --> 00:09:13,370
‫otros parámetros de consulta.

183
00:09:13,370 --> 00:09:16,730
‫Por ejemplo, ordenar, para ordenar la funcionalidad, o

184
00:09:16,730 --> 00:09:18,653
‫página, para la paginación.

185
00:09:19,610 --> 00:09:21,040
‫Necesitamos asegurarnos de que

186
00:09:21,040 --> 00:09:24,180
‫no los estamos consultando en nuestra base de datos.

187
00:09:24,180 --> 00:09:25,883
‫Por ejemplo, si

188
00:09:27,360 --> 00:09:29,893
‫agregamos aquí, página, igual a dos,

189
00:09:30,970 --> 00:09:33,993
‫entonces, por supuesto, no obtendríamos ningún resultado.

190
00:09:35,130 --> 00:09:36,300
‫Déjame mostrarte eso.

191
00:09:36,300 --> 00:09:38,280
‫Y, de hecho, no obtenemos ningún

192
00:09:38,280 --> 00:09:40,560
‫resultado, porque no hay ningún documento en esta

193
00:09:40,560 --> 00:09:42,593
‫colección donde la página esté establecida en dos.

194
00:09:43,480 --> 00:09:46,200
‫Solo queremos usar este parámetro aquí, o este

195
00:09:46,200 --> 00:09:49,170
‫campo, página, para implementar la paginación y no para

196
00:09:49,170 --> 00:09:51,593
‫realizar consultas en la base de datos.

197
00:09:53,450 --> 00:09:54,870
‫Entonces, lo que tendremos

198
00:09:54,870 --> 00:09:57,810
‫que hacer es, básicamente, excluir estos nombres de campos especiales de

199
00:09:57,810 --> 00:10:00,883
‫nuestra cadena de consulta antes de que realmente hagamos el filtrado.

200
00:10:02,680 --> 00:10:05,540
‫Ahora sigamos adelante e implementemos eso.

201
00:10:05,540 --> 00:10:08,200
‫Lo que haremos es, primero, crear

202
00:10:08,200 --> 00:10:12,333
‫una copia superficial del objeto de consulta de punto de solicitud.

203
00:10:15,690 --> 00:10:17,670
‫Llamémoslo objeto de consulta.

204
00:10:17,670 --> 00:10:20,030
‫Aquí necesitamos, de verdad, una copia impresa.

205
00:10:20,030 --> 00:10:23,560
‫No podemos simplemente hacer, solicitar una consulta de puntos,

206
00:10:23,560 --> 00:10:25,570
‫porque entonces, si eliminara

207
00:10:25,570 --> 00:10:28,030
‫algo de este objeto, también lo eliminaríamos

208
00:10:28,030 --> 00:10:30,700
‫del objeto de consulta de puntos req.

209
00:10:30,700 --> 00:10:32,170
‫Y eso es

210
00:10:32,170 --> 00:10:35,260
‫porque en JavaScript, cuando establecemos una variable en otro

211
00:10:35,260 --> 00:10:37,490
‫objeto, esa nueva variable será básicamente

212
00:10:37,490 --> 00:10:39,683
‫una referencia a ese objeto original.

213
00:10:41,030 --> 00:10:43,770
‫Entonces realmente necesitamos una copia impresa aquí.

214
00:10:43,770 --> 00:10:46,310
‫En JavaScript, no hay realmente una forma

215
00:10:46,310 --> 00:10:49,020
‫incorporada de hacer esto, pero un truco muy

216
00:10:49,020 --> 00:10:53,520
‫bueno que podemos usar, desde ES6, es usar, primero, la estructuración que

217
00:10:53,520 --> 00:10:55,960
‫usamos usando dot dot dot.

218
00:10:55,960 --> 00:10:58,270
‫Y luego podemos simplemente crear un nuevo objeto

219
00:10:58,270 --> 00:10:59,663
‫a partir de eso.

220
00:11:01,290 --> 00:11:02,123
‫Así.

221
00:11:03,260 --> 00:11:05,420
‫Esta estructuración aquí, estos tres

222
00:11:05,420 --> 00:11:08,683
‫puntos, básicamente eliminará todos los campos del objeto.

223
00:11:09,860 --> 00:11:11,810
‫Aquí con las llaves,

224
00:11:11,810 --> 00:11:13,990
‫bueno, simplemente creamos un nuevo objeto.

225
00:11:13,990 --> 00:11:15,940
‫Así que tenemos un nuevo objeto

226
00:11:15,940 --> 00:11:18,070
‫que básicamente contendrá todos los pares clave-valor

227
00:11:18,070 --> 00:11:21,053
‫que estaban en nuestro objeto de consulta de punto req.

228
00:11:23,020 --> 00:11:24,330
‫Entonces esa es una copia.

229
00:11:24,330 --> 00:11:26,450
‫Ahora creemos una matriz de

230
00:11:26,450 --> 00:11:28,633
‫todos los campos que queremos excluir.

231
00:11:31,610 --> 00:11:34,040
‫A ese lo llamo campos excluidos.

232
00:11:34,040 --> 00:11:37,090
‫Y luego queremos excluir la página, así que esa es

233
00:11:37,090 --> 00:11:38,400
‫la que les

234
00:11:38,400 --> 00:11:40,250
‫acabo de decir antes en Postman.

235
00:11:40,250 --> 00:11:42,150
‫Luego, también queremos excluir

236
00:11:43,170 --> 00:11:44,440
‫la ordenación,

237
00:11:44,440 --> 00:11:46,053
‫queremos excluir el

238
00:11:47,890 --> 00:11:50,533
‫límite y queremos excluir campos.

239
00:11:52,160 --> 00:11:54,940
‫Implementaremos toda la funcionalidad de paginación,

240
00:11:54,940 --> 00:11:58,210
‫clasificación, limitación y selección de solo algunos

241
00:11:58,210 --> 00:12:01,140
‫campos específicos, más adelante en los

242
00:12:01,140 --> 00:12:02,690
‫próximos videos.

243
00:12:03,750 --> 00:12:05,900
‫A continuación, lo que debemos hacer

244
00:12:05,900 --> 00:12:08,610
‫es básicamente eliminar todos estos campos de nuestro

245
00:12:08,610 --> 00:12:10,230
‫objeto de consulta.

246
00:12:10,230 --> 00:12:11,690
‫Y para hacer

247
00:12:11,690 --> 00:12:13,523
‫eso, recorreremos estos campos.

248
00:12:14,660 --> 00:12:15,860
‫Entonces, campos

249
00:12:17,690 --> 00:12:19,070
‫excluidos para cada uno.

250
00:12:19,070 --> 00:12:20,390
‫Y estamos usando para cada

251
00:12:20,390 --> 00:12:22,423
‫uno porque no queremos guardar una nueva matriz.

252
00:12:24,150 --> 00:12:25,840
‫Luego, para cada uno de

253
00:12:25,840 --> 00:12:27,863
‫estos elementos, podemos usar el operador de eliminación.

254
00:12:30,930 --> 00:12:32,530
‫Y luego, desde el

255
00:12:32,530 --> 00:12:34,730
‫objeto de consulta, queremos eliminar el campo

256
00:12:34,730 --> 00:12:36,700
‫con el nombre del elemento, por lo

257
00:12:36,700 --> 00:12:38,820
‫que el elemento actual en la matriz.

258
00:12:38,820 --> 00:12:42,340
‫Así, primero borraremos el campo de la página, luego

259
00:12:42,340 --> 00:12:45,563
‫el ordenamiento, luego el límite, luego los campos.

260
00:12:46,560 --> 00:12:48,440
‫Por supuesto, solo en caso de que esté ahí.

261
00:12:48,440 --> 00:12:50,860
‫Si, por ejemplo, no hay un campo

262
00:12:50,860 --> 00:12:54,030
‫de límite, entonces, por supuesto, no se eliminará, porque no

263
00:12:54,030 --> 00:12:55,130
‫está allí.

264
00:12:56,530 --> 00:12:59,233
‫Echemos ahora un vistazo si esto realmente funciona.

265
00:13:00,380 --> 00:13:02,530
‫Voy a registrar la consulta de

266
00:13:02,530 --> 00:13:05,723
‫punto de req y al mismo tiempo nuestro objeto de consulta.

267
00:13:08,742 --> 00:13:09,692
‫Dando un salvamento a esto.

268
00:13:10,600 --> 00:13:12,060
‫No se preocupe por nuestros resultados ahora.

269
00:13:12,060 --> 00:13:14,190
‫Todo lo que quiero ver es

270
00:13:14,190 --> 00:13:17,080
‫nuestro objeto de consulta, solo para asegurarme de que

271
00:13:17,080 --> 00:13:19,530
‫esta lógica que tenemos aquí realmente funcione.

272
00:13:21,540 --> 00:13:26,540
‫Agreguemos aquí una especie de uno y un límite de 10.

273
00:13:27,260 --> 00:13:29,210
‫Estos tendrán más sentido más adelante.

274
00:13:29,210 --> 00:13:30,540
‫Por ahora, solo los

275
00:13:30,540 --> 00:13:32,293
‫estoy agregando, para luego poder excluirlos.

276
00:13:34,490 --> 00:13:37,120
‫Los resultados no importan, todo lo que importa

277
00:13:37,120 --> 00:13:40,640
‫es que nuestra consulta original es esta aquí, y luego nuestro

278
00:13:40,640 --> 00:13:42,820
‫objeto de consulta, que es el que

279
00:13:42,820 --> 00:13:44,010
‫vamos a usar,

280
00:13:44,010 --> 00:13:46,320
‫solo tiene dificultad para configurarlo como fácil.

281
00:13:46,320 --> 00:13:49,723
‫Eso es porque excluimos, paginamos, ordenamos y limitamos.

282
00:13:51,000 --> 00:13:53,460
‫Esto ahora funciona, así que en

283
00:13:53,460 --> 00:13:57,033
‫lugar de usar req dot query, usaremos nuestro objeto de consulta.

284
00:13:59,390 --> 00:14:03,000
‫Vamos a deshacernos de eso e intentarlo de nuevo.

285
00:14:03,000 --> 00:14:05,080
‫Ahora deberíamos volver a

286
00:14:05,080 --> 00:14:07,180
‫consultar todos los documentos que tienen

287
00:14:07,180 --> 00:14:11,473
‫una dificultad establecida en fácil e ignorar todos estos otros campos.

288
00:14:13,256 --> 00:14:14,150
‫Envía eso.

289
00:14:14,150 --> 00:14:15,930
‫Y, de hecho, volvemos

290
00:14:15,930 --> 00:14:18,623
‫a los cuatro resultados que teníamos antes.

291
00:14:19,900 --> 00:14:22,610
‫También podemos activar la duración y, de

292
00:14:22,610 --> 00:14:24,743
‫hecho, ahora tendremos dos resultados.

293
00:14:26,110 --> 00:14:27,180
‫¿Recuérdalo?

294
00:14:27,180 --> 00:14:28,643
‫Y si los

295
00:14:29,960 --> 00:14:32,380
‫apagamos, bueno, entonces, por supuesto, funcionará igual.

296
00:14:32,380 --> 00:14:34,330
‫Eliminemos esta línea vacía aquí.

297
00:14:36,740 --> 00:14:40,340
‫Y así, de hecho, con nuestra cadena de consulta original,

298
00:14:40,340 --> 00:14:42,693
‫las cosas obviamente también funcionaron igual.

299
00:14:44,220 --> 00:14:47,630
‫Preparamos nuestra función de filtro para que

300
00:14:47,630 --> 00:14:51,410
‫ignore los campos de página, clasificación y límite.

301
00:14:51,410 --> 00:14:53,450
‫Pero en realidad hay algo

302
00:14:53,450 --> 00:14:56,210
‫más que debemos hacer en nuestro código,

303
00:14:56,210 --> 00:14:59,753
‫para poder básicamente implementar estas funciones en videos futuros.

304
00:15:01,360 --> 00:15:03,250
‫Volvamos aquí a nuestro código.

305
00:15:03,250 --> 00:15:04,570
‫Así que ahora aprendamos

306
00:15:04,570 --> 00:15:07,093
‫un poco sobre cómo funcionan realmente las consultas en Mongoose.

307
00:15:08,220 --> 00:15:09,910
‫Creo que mencioné esto

308
00:15:09,910 --> 00:15:13,400
‫antes, pero es muy importante hablar de esto nuevamente.

309
00:15:13,400 --> 00:15:16,943
‫Este método de búsqueda aquí devolverá una consulta.

310
00:15:18,060 --> 00:15:20,430
‫Todo esto aquí devolverá una consulta.

311
00:15:20,430 --> 00:15:22,410
‫Y esa es la razón por

312
00:15:22,410 --> 00:15:24,840
‫la que luego podemos encadenar otros métodos como este.

313
00:15:24,840 --> 00:15:28,630
‫Como dónde, iguales y todos estos otros métodos de

314
00:15:28,630 --> 00:15:30,770
‫los que les hablé antes.

315
00:15:30,770 --> 00:15:33,770
‫Permítanme mostrarles eso en la documentación nuevamente.

316
00:15:37,670 --> 00:15:40,170
‫Aquí tenemos el objeto de

317
00:15:40,170 --> 00:15:42,710
‫consulta, y nuevamente, cuando usamos el

318
00:15:42,710 --> 00:15:46,590
‫método de búsqueda, devolverá un objeto que es una consulta.

319
00:15:46,590 --> 00:15:48,310
‫Entonces, en el prototipo de

320
00:15:48,310 --> 00:15:50,180
‫punto de consulta, tenemos todos estos métodos.

321
00:15:50,180 --> 00:15:52,820
‫Por ejemplo, aquí abajo tenemos dónde, que

322
00:15:52,820 --> 00:15:54,040
‫acabo de mencionar.

323
00:15:54,040 --> 00:15:55,790
‫Tenemos el tipo que es

324
00:15:55,790 --> 00:15:58,120
‫el que usaremos más tarde para clasificar.

325
00:15:58,120 --> 00:16:00,870
‫Tenemos, veamos, tenemos menos que

326
00:16:00,870 --> 00:16:03,740
‫o menos que iguales, tenemos más.

327
00:16:03,740 --> 00:16:05,260
‫Tenemos...

328
00:16:05,260 --> 00:16:06,700
‫¿Qué más usamos?

329
00:16:06,700 --> 00:16:08,070
‫Usamos iguales.

330
00:16:08,070 --> 00:16:11,310
‫Todos estos son parte del prototipo de punto de consulta.

331
00:16:11,310 --> 00:16:13,920
‫Lo cual, nuevamente, se refiere a los

332
00:16:13,920 --> 00:16:16,783
‫objetos que estamos creando usando la clase de consulta.

333
00:16:19,613 --> 00:16:21,410
‫Nuevamente, esta es la razón

334
00:16:21,410 --> 00:16:24,070
‫por la que podemos hacer este tipo de encadenamiento.

335
00:16:24,070 --> 00:16:26,290
‫Ahora viene la parte importante.

336
00:16:26,290 --> 00:16:28,350
‫Tan pronto como realmente esperemos

337
00:16:28,350 --> 00:16:30,970
‫el resultado de la consulta, tan pronto

338
00:16:30,970 --> 00:16:33,950
‫como usemos esperar aquí o aquí, por ejemplo.

339
00:16:33,950 --> 00:16:35,890
‫Tan pronto como usemos esta

340
00:16:35,890 --> 00:16:37,910
‫espera, la consulta se ejecutará

341
00:16:37,910 --> 00:16:39,610
‫y volverá con los

342
00:16:39,610 --> 00:16:42,144
‫documentos que realmente coinciden con nuestra consulta.

343
00:16:42,144 --> 00:16:44,960
‫Si lo hacemos así, como lo hemos hecho aquí, entonces

344
00:16:44,960 --> 00:16:46,730
‫ahora hay una forma de, más

345
00:16:46,730 --> 00:16:49,110
‫adelante, implementar la ordenación o la paginación, o

346
00:16:49,110 --> 00:16:50,793
‫todas estas otras características.

347
00:16:51,880 --> 00:16:53,870
‫En cambio, lo que tendremos

348
00:16:53,870 --> 00:16:57,220
‫que hacer es guardar esta parte aquí en una consulta,

349
00:16:57,220 --> 00:17:00,200
‫luego, al final, tan pronto como cambiemos todos los

350
00:17:00,200 --> 00:17:02,440
‫métodos a la consulta que necesitamos, solo

351
00:17:02,440 --> 00:17:04,863
‫entonces al final, podemos esperar que consulta.

352
00:17:06,080 --> 00:17:08,600
‫Por ejemplo, usaremos el método de clasificación.

353
00:17:08,600 --> 00:17:10,200
‫Vamos a utilizar el método

354
00:17:10,200 --> 00:17:12,440
‫de predicción, vamos a utilizar el método de límite,

355
00:17:12,440 --> 00:17:14,500
‫y vamos a utilizar, en realidad, un

356
00:17:14,500 --> 00:17:16,620
‫montón de métodos y encadenarlos a esta consulta.

357
00:17:16,620 --> 00:17:18,110
‫Eso sería imposible

358
00:17:18,110 --> 00:17:20,910
‫de hacer, nuevamente, si esperamos el resultado de

359
00:17:20,910 --> 00:17:23,073
‫esta consulta inicial aquí, de inmediato.

360
00:17:24,590 --> 00:17:26,470
‫Espero que tenga sentido.

361
00:17:26,470 --> 00:17:28,660
‫La forma en que lo

362
00:17:28,660 --> 00:17:30,140
‫haremos es

363
00:17:31,090 --> 00:17:33,473
‫que tendremos nuestros recorridos aquí.

364
00:17:35,540 --> 00:17:37,623
‫Y esto esperará la consulta.

365
00:17:41,310 --> 00:17:43,830
‫La consulta es, bueno, simplemente la

366
00:17:43,830 --> 00:17:45,533
‫consulta sin esperas.

367
00:17:47,460 --> 00:17:49,360
‫Solo para que sea consistente con

368
00:17:49,360 --> 00:17:50,363
‫esta parte

369
00:17:52,060 --> 00:17:53,163
‫aquí, hagámoslo así.

370
00:17:55,603 --> 00:17:57,123
‫Digamos que,

371
00:17:58,540 --> 00:18:00,437
‫primero, construimos la

372
00:18:00,437 --> 00:18:03,363
‫consulta y luego la ejecutamos.

373
00:18:07,290 --> 00:18:08,313
‫Eso no es correcto.

374
00:18:11,490 --> 00:18:13,040
‫Ya que estamos haciendo

375
00:18:13,040 --> 00:18:14,330
‫comentarios aquí,

376
00:18:15,300 --> 00:18:16,790
‫digamos también enviar respuesta.

377
00:18:16,790 --> 00:18:20,023
‫Solo para que nuestro código sea un poco más fácil de escanear.

378
00:18:20,870 --> 00:18:22,380
‫Espero que todo

379
00:18:22,380 --> 00:18:24,820
‫esto tenga sentido, resultó ser un

380
00:18:24,820 --> 00:18:26,780
‫video bastante largo, pero

381
00:18:26,780 --> 00:18:29,356
‫era importante terminar esta parte aquí

382
00:18:29,356 --> 00:18:31,830
‫explicándoles esta lógica aquí, para que

383
00:18:31,830 --> 00:18:34,080
‫en los próximos videos podamos

384
00:18:34,080 --> 00:18:36,110
‫implementar la resto de funciones.

385
00:18:36,110 --> 00:18:37,940
‫Porque, de nuevo,

386
00:18:37,940 --> 00:18:39,983
‫sin tenerlo así, no funcionaría.

