﻿1
00:00:00,940 --> 00:00:02,720
‫Jonas: Aprendimos sobre el middleware

2
00:00:02,720 --> 00:00:05,860
‫de documentos y consultas, y ahora el último middleware

3
00:00:05,860 --> 00:00:09,033
‫del que vamos a hablar es el middleware de

4
00:00:10,560 --> 00:00:12,253
‫agregación, y como probablemente

5
00:00:13,168 --> 00:00:14,930
‫pueda adivinar, el middleware de

6
00:00:14,930 --> 00:00:18,350
‫agregación nos permite agregar ganchos antes o después de que

7
00:00:18,350 --> 00:00:19,970
‫ocurra una agregación,

8
00:00:19,970 --> 00:00:23,830
‫y así continuemos ahora con nuestro ejemplo anterior en el que

9
00:00:23,830 --> 00:00:27,540
‫ocultamos los recorridos secretos de las consultas, ahora, en conjunto, los

10
00:00:27,540 --> 00:00:30,270
‫recorridos secretos todavía se están utilizando, ¿verdad?

11
00:00:30,270 --> 00:00:32,220
‫Entonces, confirmemos rápidamente que

12
00:00:33,840 --> 00:00:37,290
‫en realidad, por ejemplo, aquí en nuestras estadísticas de

13
00:00:37,290 --> 00:00:39,940
‫recorrido, así que ahí es donde usamos

14
00:00:39,940 --> 00:00:42,700
‫la primera agregación y, como puede ver,

15
00:00:42,700 --> 00:00:45,500
‫tenemos cuatro recorridos aquí, cuatro en fácil

16
00:00:45,500 --> 00:00:49,060
‫y tres en medio, por lo que son 11, pero

17
00:00:49,060 --> 00:00:52,480
‫ya Sepa que en realidad solo queremos 10 recorridos.

18
00:00:52,480 --> 00:00:55,380
‫Así que hay 10 recorridos que no

19
00:00:55,380 --> 00:00:58,900
‫son secretos y uno que es secreto, por lo que

20
00:00:58,900 --> 00:01:01,880
‫ahora tenemos todos estos 11 recorridos aquí y, básicamente,

21
00:01:01,880 --> 00:01:05,000
‫también queremos excluir el recorrido secreto en la agregación.

22
00:01:05,000 --> 00:01:06,373
‫Entonces, ¿cómo podríamos hacer eso?

23
00:01:07,430 --> 00:01:09,680
‫Bueno, echemos un vistazo a dónde

24
00:01:09,680 --> 00:01:14,680
‫está sucediendo realmente nuestra agregación, así que está aquí abajo, sí, así que en

25
00:01:14,900 --> 00:01:19,270
‫obtener los pasos del recorrido, y lo que podríamos hacer es aquí,

26
00:01:19,270 --> 00:01:22,640
‫en este estado de coincidencia, simplemente excluir los recorridos

27
00:01:22,640 --> 00:01:24,520
‫secretos que son verdaderos, ¿verdad?

28
00:01:24,520 --> 00:01:26,740
‫Entonces sería bastante fácil de

29
00:01:26,740 --> 00:01:29,080
‫agregar aquí, pero luego tendríamos que

30
00:01:29,080 --> 00:01:32,080
‫agregar lo mismo aquí en la otra agregación

31
00:01:32,080 --> 00:01:34,680
‫que tenemos, y si tuviéramos aún más

32
00:01:34,680 --> 00:01:37,860
‫agregaciones, tendríamos que agregar eso en todas y

33
00:01:37,860 --> 00:01:40,560
‫eso es por supuesto que no es

34
00:01:40,560 --> 00:01:44,010
‫una buena idea, porque, por ejemplo, podríamos olvidarnos de

35
00:01:44,010 --> 00:01:48,820
‫hacerlo y también es solo un código repetitivo, así que simplemente excluyémoslo a

36
00:01:48,820 --> 00:01:53,280
‫nivel de modelo, de acuerdo, agreguemos middleware de agregación aquí comenzando con

37
00:01:54,470 --> 00:01:55,893
‫un comentario.

38
00:01:59,450 --> 00:02:03,970
‫Entonces, el middleware de agregación y, al igual

39
00:02:05,070 --> 00:02:10,040
‫que antes, tenemos tourSchema. pre, por lo que queremos que esto suceda

40
00:02:10,040 --> 00:02:12,110
‫antes de que la agregación

41
00:02:13,060 --> 00:02:16,573
‫se ejecute realmente, por lo que aquí usamos el gancho agregado.

42
00:02:18,230 --> 00:02:22,047
‫Muy bien y luego nuestra función, que nuevamente

43
00:02:22,047 --> 00:02:26,332
‫acepta la siguiente función, por lo que llama al siguiente middleware.

44
00:02:26,332 --> 00:02:31,332
‫Muy bien, comencemos por echar un vistazo a esto, así que

45
00:02:32,530 --> 00:02:37,113
‫recuerde que aquí en el middleware de consultas, este

46
00:02:37,113 --> 00:02:40,283
‫objeto apunta a la consulta actual.

47
00:02:41,130 --> 00:02:44,590
‫Luego, aquí en el middleware de documentos, este

48
00:02:44,590 --> 00:02:46,850
‫objeto apunta al documento

49
00:02:46,850 --> 00:02:50,330
‫actual, y aquí abajo, en el middleware de

50
00:02:50,330 --> 00:02:53,880
‫agregación, esto apuntará al objeto de agregación actual.

51
00:02:53,880 --> 00:02:56,764
‫Bien, echemos un vistazo a eso en la

52
00:02:56,764 --> 00:03:00,113
‫consola, pero antes de eso, permítanme eliminar este registro aquí.

53
00:03:01,590 --> 00:03:05,890
‫Muy bien, guarde, ejecute esta agregación aquí y eso está

54
00:03:08,520 --> 00:03:12,520
‫tomando mucho tiempo, así que cancelemos y regresemos y

55
00:03:13,750 --> 00:03:16,580
‫eso es probablemente porque no estamos

56
00:03:16,580 --> 00:03:21,460
‫llamando a continuación aquí, y como ya sabemos, nos quedamos atascados

57
00:03:21,460 --> 00:03:23,580
‫en la función de

58
00:03:23,580 --> 00:03:26,340
‫middleware. y eso no es bueno.

59
00:03:26,340 --> 00:03:29,063
‫Intentémoslo de nuevo ahora, envíe, y sí,

60
00:03:30,120 --> 00:03:33,490
‫ahora estamos de regreso y ahora echemos un vistazo

61
00:03:33,490 --> 00:03:35,470
‫al objeto de agregación.

62
00:03:35,470 --> 00:03:37,700
‫De acuerdo, hay muchas cosas

63
00:03:39,980 --> 00:03:43,800
‫aquí, así que no es realmente interesante aquí y realmente

64
00:03:44,950 --> 00:03:48,330
‫no puedo encontrar lo que estoy tratando de mostrarles

65
00:03:48,330 --> 00:03:53,330
‫aquí, así que simplemente agreguemos esto. pipeline bien porque lo que

66
00:03:53,450 --> 00:03:57,140
‫realmente quería mostrarte es solo el objeto pipeline.

67
00:03:57,140 --> 00:04:00,620
‫Está bien, y en realidad es una canalización como esta, por lo

68
00:04:00,620 --> 00:04:03,053
‫que en realidad es una función, un método.

69
00:04:04,970 --> 00:04:06,593
‫Así que limpiemos la consola aquí.

70
00:04:07,820 --> 00:04:12,820
‫Intente esto nuevamente, y aquí obtenemos la canalización de agregación, y esa

71
00:04:14,350 --> 00:04:17,620
‫es simplemente la matriz que pasamos a

72
00:04:17,620 --> 00:04:19,770
‫la función agregada antes.

73
00:04:19,770 --> 00:04:23,040
‫Bien, echemos un vistazo y

74
00:04:23,040 --> 00:04:26,400
‫aquí tenemos esa matriz, esta no esta.

75
00:04:26,400 --> 00:04:28,200
‫Entonces tenemos la coincidencia con

76
00:04:28,200 --> 00:04:30,910
‫el grupo y luego la clasificación, por lo que

77
00:04:30,910 --> 00:04:34,470
‫si echamos un vistazo aquí en la consola, tenemos nuestra coincidencia con el

78
00:04:34,470 --> 00:04:37,320
‫promedio de calificaciones que tenemos en grupo y luego ordenamos.

79
00:04:37,320 --> 00:04:41,020
‫Así que esa es exactamente la canalización que especificamos antes,

80
00:04:41,020 --> 00:04:44,570
‫y ahora, para filtrar los recorridos secretos, todo lo

81
00:04:44,570 --> 00:04:47,970
‫que tenemos que hacer es agregar otra etapa de

82
00:04:47,970 --> 00:04:50,700
‫coincidencia justo al comienzo de esta

83
00:04:50,700 --> 00:04:53,713
‫matriz de canalización, correcto, así que hagámoslo.

84
00:04:55,029 --> 00:04:58,040
‫Así que hagamos eso aquí antes de

85
00:04:58,040 --> 00:05:03,040
‫este registro, entonces esto. pipeline y recuerde que esto es una matriz y

86
00:05:03,890 --> 00:05:06,130
‫¿cómo agregamos un elemento al comienzo de

87
00:05:06,130 --> 00:05:06,963
‫una matriz?

88
00:05:08,262 --> 00:05:11,510
‫Usamos unshift y, por lo tanto, es un método estándar

89
00:05:11,510 --> 00:05:15,340
‫de JavaScript para matrices, también tenemos shift para agregar al final

90
00:05:15,340 --> 00:05:18,470
‫de la matriz y desshift al principio de la

91
00:05:18,470 --> 00:05:21,690
‫matriz, por lo que nuevamente lo que queremos agregar

92
00:05:21,690 --> 00:05:25,490
‫aquí ahora es agregar solo otra etapa, muy similar a la

93
00:05:25,490 --> 00:05:26,803
‫que tenemos aquí.

94
00:05:29,690 --> 00:05:34,690
‫Entonces coincida y luego secretTour, no igual a verdadero.

95
00:05:40,460 --> 00:05:45,340
‫Salvarlo, y este fragmento de código aquí básicamente es exactamente

96
00:05:45,340 --> 00:05:48,330
‫lo que tenemos aquí, ¿verdad?

97
00:05:48,330 --> 00:05:51,220
‫Básicamente, eliminar de la salida todos

98
00:05:51,220 --> 00:05:55,260
‫los documentos que tienen secretTour configurado como verdadero, ¿verdad?

99
00:05:55,260 --> 00:06:00,160
‫Entonces, si lo guardas ahora, veamos esto, y recuerde que ahora tenemos 11

100
00:06:00,160 --> 00:06:03,250
‫recorridos, cuatro, cuatro y tres, así que verifiquemos

101
00:06:03,250 --> 00:06:06,780
‫el resultado después y ahora, de hecho, uno de

102
00:06:06,780 --> 00:06:10,340
‫los suyos difíciles se ha ido, así que solo ahora.

103
00:06:10,340 --> 00:06:13,460
‫tenemos tres recorridos difíciles, lo que significa que

104
00:06:13,460 --> 00:06:15,930
‫volvemos a tener solo 10.

105
00:06:15,930 --> 00:06:20,260
‫Está bien, y de hecho podemos confirmar que nuestra gira súper

106
00:06:20,260 --> 00:06:24,630
‫secreta fue una gira difícil, de acuerdo y eso ya se ha

107
00:06:24,630 --> 00:06:27,700
‫ido y nuestros resultados ahora son solo

108
00:06:27,700 --> 00:06:30,800
‫sobre las giras regulares no secretas, ¿de acuerdo?

109
00:06:30,800 --> 00:06:34,670
‫Y podemos volver a echar un vistazo a nuestra canalización de

110
00:06:34,670 --> 00:06:38,640
‫agregación ahora y aquí puede ver que ahora tenemos estas dos etapas emparejadas.

111
00:06:38,640 --> 00:06:41,150
‫Genial y, como mencioné antes, no

112
00:06:41,150 --> 00:06:45,050
‫hay problema en repetir estas etapas, podemos tener tantas etapas de

113
00:06:45,050 --> 00:06:49,920
‫coincidencia como queramos, está bien y eso es todo para el middleware de agregación.

114
00:06:49,920 --> 00:06:53,740
‫No voy a incluir ningún código postal aquí para el middleware que

115
00:06:53,740 --> 00:06:56,290
‫no sea realmente necesario, y tampoco voy a

116
00:06:56,290 --> 00:06:59,050
‫hablar sobre el modelo de middleware aquí porque

117
00:06:59,050 --> 00:07:01,570
‫en realidad no es tan importante.

118
00:07:01,570 --> 00:07:04,750
‫Muy bien, el middleware es algo realmente interesante e

119
00:07:04,750 --> 00:07:08,180
‫importante que podemos agregar a nuestros modelos, y de hecho

120
00:07:08,180 --> 00:07:10,560
‫hay otras cosas interesantes que podemos hacer

121
00:07:10,560 --> 00:07:13,430
‫con los modelos, por ejemplo, implementar métodos de

122
00:07:13,430 --> 00:07:16,690
‫instancia que son métodos que estarán disponibles en cada documento

123
00:07:16,690 --> 00:07:19,220
‫después de ser consultado, y eso nuevamente

124
00:07:19,220 --> 00:07:21,410
‫puede ser bastante útil, y lo

125
00:07:21,410 --> 00:07:23,402
‫haremos más adelante en la

126
00:07:23,402 --> 00:07:25,570
‫sección de autenticación también, de acuerdo.

127
00:07:25,570 --> 00:07:27,940
‫Así que lo dejaré para un poco más

128
00:07:27,940 --> 00:07:30,110
‫tarde, ahora lo que vamos a

129
00:07:30,110 --> 00:07:34,170
‫hacer en esta sección para terminar es agregar algo de validación, está bien, así

130
00:07:34,170 --> 00:07:37,070
‫que en los próximos dos videos hablaremos de eso.

