﻿1
00:00:01,300 --> 00:00:03,180
‫Instructor: ¿Recuerda que tenemos un

2
00:00:03,180 --> 00:00:06,500
‫campo para la calificación promedio en cada documento de viaje?

3
00:00:06,500 --> 00:00:09,860
‫Bueno, hasta este punto, ese campo realmente no

4
00:00:09,860 --> 00:00:12,110
‫contiene ningún dato significativo, ¿verdad?

5
00:00:12,110 --> 00:00:14,290
‫Pero ahora cambiemos eso y

6
00:00:14,290 --> 00:00:17,233
‫calculemos las calificaciones promedio en esta conferencia.

7
00:00:18,920 --> 00:00:22,410
‫Por lo tanto, almacenar un resumen de un conjunto de

8
00:00:22,410 --> 00:00:26,270
‫datos relacionados en el conjunto de datos principal es en realidad una técnica

9
00:00:26,270 --> 00:00:29,900
‫muy popular en el modelado de datos que todavía no había mencionado.

10
00:00:29,900 --> 00:00:32,720
‫Y esta técnica puede ser realmente útil

11
00:00:32,720 --> 00:00:34,750
‫para evitar consultas constantes

12
00:00:34,750 --> 00:00:36,890
‫del conjunto de datos relacionados.

13
00:00:36,890 --> 00:00:40,110
‫Entonces, en nuestra aplicación, un gran ejemplo de esta técnica

14
00:00:40,110 --> 00:00:43,320
‫es almacenar la calificación promedio y la cantidad de

15
00:00:43,320 --> 00:00:46,870
‫calificaciones en cada recorrido, de modo que no tengamos que consultar

16
00:00:46,870 --> 00:00:49,860
‫las reseñas y calcular ese promedio cada vez

17
00:00:49,860 --> 00:00:52,150
‫que consultamos todos los recorridos, okey.

18
00:00:52,150 --> 00:00:54,380
‫Por ejemplo, eso podría resultar muy

19
00:00:54,380 --> 00:00:57,280
‫útil para una página de descripción general del recorrido

20
00:00:57,280 --> 00:01:00,320
‫en nuestro front-end donde realmente no queremos mostrar todas las

21
00:01:00,320 --> 00:01:03,350
‫reseñas, pero aún queremos mostrar un resumen de estas

22
00:01:03,350 --> 00:01:06,730
‫reseñas, como por ejemplo, el número de calificaciones y la media.

23
00:01:06,730 --> 00:01:09,130
‫Y de hecho ya tenemos los campos para eso en

24
00:01:09,130 --> 00:01:10,433
‫nuestro esquema de viaje.

25
00:01:11,450 --> 00:01:15,870
‫Así que aquí mismo al principio, creo.

26
00:01:15,870 --> 00:01:17,660
‫Sí, tenemos el promedio

27
00:01:17,660 --> 00:01:19,760
‫de calificaciones y la cantidad de

28
00:01:19,760 --> 00:01:22,380
‫calificaciones aquí, pero en este momento son solo

29
00:01:22,380 --> 00:01:25,307
‫algunos números y, por supuesto, no son el promedio

30
00:01:25,307 --> 00:01:27,560
‫real ni la cantidad de calificaciones, porque

31
00:01:27,560 --> 00:01:30,840
‫nunca calculamos eso en ningún momento en nuestra aplicación, pero

32
00:01:30,840 --> 00:01:34,290
‫eso es exactamente lo que vamos a cambiar en este video.

33
00:01:34,290 --> 00:01:37,370
‫Así que ahora mismo vamos a calcular la calificación

34
00:01:37,370 --> 00:01:39,750
‫promedio y también el número de calificaciones

35
00:01:39,750 --> 00:01:43,330
‫de un recorrido cada vez que se agrega una nueva revisión

36
00:01:43,330 --> 00:01:47,000
‫a ese recorrido o también cuando se actualiza o elimina una revisión,

37
00:01:47,000 --> 00:01:49,230
‫porque esas son exactamente las situaciones

38
00:01:49,230 --> 00:01:52,830
‫en las que el número o el promedio podría cambiar, ¿no?

39
00:01:52,830 --> 00:01:55,920
‫Entonces, ¿cómo vamos a implementar esto?

40
00:01:55,920 --> 00:01:58,800
‫Bueno, aquí en el modelo de revisión, crearemos

41
00:01:58,800 --> 00:02:00,620
‫una nueva función que

42
00:02:00,620 --> 00:02:02,690
‫incluirá un ID de recorrido y

43
00:02:02,690 --> 00:02:05,690
‫calculará la calificación promedio y la cantidad de

44
00:02:05,690 --> 00:02:09,410
‫calificaciones que existen en nuestra colección para ese recorrido exacto.

45
00:02:09,410 --> 00:02:11,880
‫Luego, al final, la función incluso actualizará

46
00:02:11,880 --> 00:02:14,020
‫el documento de viaje correspondiente.

47
00:02:14,020 --> 00:02:16,360
‫Luego, para usar esa función, usaremos

48
00:02:16,360 --> 00:02:19,510
‫middleware para llamar básicamente a esta función cada vez

49
00:02:19,510 --> 00:02:22,650
‫que haya una nueva revisión o que se actualice

50
00:02:22,650 --> 00:02:24,980
‫o elimine una, está bien.

51
00:02:24,980 --> 00:02:28,030
‫Así que comencemos ahora escribiendo esa función y

52
00:02:28,030 --> 00:02:31,370
‫para eso vamos a escribir un método estático en

53
00:02:31,370 --> 00:02:34,510
‫nuestro esquema, y esa es una característica de Mongoose

54
00:02:34,510 --> 00:02:36,580
‫que aún no hemos usado.

55
00:02:36,580 --> 00:02:38,630
‫Así que solo usamos el método

56
00:02:38,630 --> 00:02:40,500
‫de instancia, que podemos invocar

57
00:02:40,500 --> 00:02:42,050
‫en documentos y

58
00:02:42,050 --> 00:02:46,090
‫también son muy útiles, pero esta vez realmente usaremos métodos estáticos.

59
00:02:46,090 --> 00:02:46,923
‫Bueno.

60
00:02:47,850 --> 00:02:51,330
‫Entonces, nuevamente, estos se pueden llamar directamente en el modelo,

61
00:02:51,330 --> 00:02:55,157
‫por ejemplo, como esta revisión. calcStats, está

62
00:02:58,010 --> 00:02:59,520
‫bien.

63
00:02:59,520 --> 00:03:04,350
‫Y la forma en que esto funciona es, por

64
00:03:04,350 --> 00:03:09,323
‫supuesto, reviewSchema y luego. estática y luego el nombre de la función.

65
00:03:10,490 --> 00:03:11,540
‫Por lo tanto,

66
00:03:18,360 --> 00:03:22,143
‫calcAverageRatings es igual a una función, que recuerda que incluye un ID de

67
00:03:24,800 --> 00:03:27,180
‫recorrido, y ese ID es, por supuesto, para

68
00:03:27,180 --> 00:03:29,670
‫el recorrido al que pertenece la revisión actual.

69
00:03:29,670 --> 00:03:32,790
‫Y sé que en este punto probablemente todo suene

70
00:03:32,790 --> 00:03:35,000
‫un poco confuso, pero no se preocupe

71
00:03:35,000 --> 00:03:36,720
‫una vez que tengamos todo

72
00:03:36,720 --> 00:03:38,380
‫esto implementado y también

73
00:03:38,380 --> 00:03:42,080
‫cuando lo estemos probando, tendrá mucho sentido en la práctica, ¿de acuerdo?

74
00:03:42,080 --> 00:03:45,120
‫De todos modos, para poder hacer ahora

75
00:03:45,120 --> 00:03:48,470
‫el cálculo, usaremos nuevamente la canalización de agregación, ¿verdad?

76
00:03:48,470 --> 00:03:53,470
‫Así que recordemos eso en nuestro controlador de herramientas, así que aquí

77
00:03:53,970 --> 00:03:56,990
‫mismo usamos la canalización de agregación

78
00:03:56,990 --> 00:04:00,730
‫para crear también algunas estadísticas como esta, de acuerdo.

79
00:04:00,730 --> 00:04:04,560
‫Entonces usamos el método agregado, que llamamos directamente en

80
00:04:04,560 --> 00:04:06,670
‫el modelo, está bien.

81
00:04:06,670 --> 00:04:09,080
‫Así que ahora, en nuestro método de instancia, podemos

82
00:04:09,080 --> 00:04:10,393
‫hacer exactamente lo mismo.

83
00:04:12,140 --> 00:04:15,690
‫Entonces, en un método estático como este, estas palabras clave

84
00:04:15,690 --> 00:04:18,130
‫en realidad apuntan al modelo actual.

85
00:04:18,130 --> 00:04:20,623
‫Entonces es por eso que podemos usar esto. agregado, porque recuerde

86
00:04:22,160 --> 00:04:25,100
‫que debemos llamar a esto. agregar en el modelo

87
00:04:25,100 --> 00:04:27,470
‫directamente, y esa es exactamente la razón por

88
00:04:27,470 --> 00:04:30,970
‫la que estamos usando un método estático aquí en primer lugar.

89
00:04:30,970 --> 00:04:33,690
‫Porque nuevamente, esto ahora apunta al

90
00:04:33,690 --> 00:04:38,200
‫modelo y necesitamos llamar al agregado siempre en el modelo, está bien.

91
00:04:38,200 --> 00:04:41,610
‫Entonces, en el agregado, debemos pasar una serie

92
00:04:41,610 --> 00:04:45,850
‫de todas las etapas que queremos en conjunto, está bien.

93
00:04:45,850 --> 00:04:47,930
‫Entonces, ¿qué queremos hacer primero?

94
00:04:47,930 --> 00:04:51,930
‫Bueno, el primer paso debería ser seleccionar todas las reseñas

95
00:04:51,930 --> 00:04:54,280
‫que realmente pertenecen a la

96
00:04:54,280 --> 00:04:57,470
‫gira actual que se pasó como argumento.

97
00:04:57,470 --> 00:04:58,790
‫Bueno.

98
00:04:58,790 --> 00:05:02,093
‫Entonces, nuestra primera etapa es una etapa de partido,

99
00:05:03,090 --> 00:05:03,933
‫recuerda

100
00:05:05,360 --> 00:05:07,580
‫eso, y aquí pasamos nuestro objeto

101
00:05:08,620 --> 00:05:11,420
‫de filtro y podemos decir tour igual a

102
00:05:11,420 --> 00:05:13,740
‫tour, pero realmente no lo necesitamos,

103
00:05:13,740 --> 00:05:17,950
‫como ya sabes, así que eliminemos esto. parte, o simplemente para hacerlo

104
00:05:17,950 --> 00:05:20,670
‫un poco menos confuso aquí con los nombres,

105
00:05:20,670 --> 00:05:24,290
‫llamemos a este aquí ID de la gira, de acuerdo.

106
00:05:24,290 --> 00:05:26,620
‫Así que tourId aquí, está

107
00:05:26,620 --> 00:05:27,480
‫bien.

108
00:05:27,480 --> 00:05:29,510
‫Así que, de esta manera,

109
00:05:29,510 --> 00:05:33,330
‫solo seleccionamos un recorrido que realmente queremos actualizar, de acuerdo.

110
00:05:33,330 --> 00:05:35,740
‫Ahora, en la siguiente etapa, calculemos

111
00:05:35,740 --> 00:05:37,930
‫las estadísticas ellos mismos,

112
00:05:37,930 --> 00:05:41,033
‫y para eso usamos una etapa de grupos.

113
00:05:42,920 --> 00:05:44,900
‫Y en la fase de grupo,

114
00:05:44,900 --> 00:05:49,900
‫recuerde que el primer campo que debemos especificar es el ID, entonces _id y luego

115
00:05:50,240 --> 00:05:51,740
‫el campo común que

116
00:05:51,740 --> 00:05:53,570
‫todos los documentos tienen en común

117
00:05:53,570 --> 00:05:56,200
‫por el que queremos agrupar y ese será

118
00:05:56,200 --> 00:05:57,543
‫nuevamente el recorrido.

119
00:06:00,230 --> 00:06:04,460
‫Así que, al igual que en nuestro ejemplo anterior de

120
00:06:04,460 --> 00:06:07,310
‫cálculo estadístico, lo agrupamos por dificultad.

121
00:06:07,310 --> 00:06:10,250
‫Así que de esta manera calculamos las estadísticas para

122
00:06:10,250 --> 00:06:11,840
‫recorridos fáciles y estadísticos

123
00:06:11,840 --> 00:06:14,560
‫para medios y luego estadísticas para recorridos difíciles.

124
00:06:14,560 --> 00:06:17,140
‫Entonces, en este ejemplo, agrupamos todos los recorridos

125
00:06:17,140 --> 00:06:18,453
‫por su dificultad, está

126
00:06:19,450 --> 00:06:20,283
‫bien.

127
00:06:20,283 --> 00:06:22,810
‫Pero aquí, por supuesto, estamos agrupando todos los recorridos

128
00:06:22,810 --> 00:06:23,663
‫por recorrido.

129
00:06:25,440 --> 00:06:26,273
‫Excelente.

130
00:06:26,273 --> 00:06:28,023
‫Ahora el número de calificaciones, recuerde

131
00:06:31,290 --> 00:06:32,653
‫cómo lo hacemos,

132
00:06:33,690 --> 00:06:35,970
‫así que todo lo que hacemos es básicamente

133
00:06:35,970 --> 00:06:37,970
‫agregar una para cada gira que tenemos,

134
00:06:37,970 --> 00:06:41,570
‫por lo que cada gira que coincidió en el paso anterior, está bien.

135
00:06:41,570 --> 00:06:44,810
‫Entonces, si hay cinco documentos de revisión para el

136
00:06:44,810 --> 00:06:48,310
‫recorrido actual, se agregará uno para cada uno de estos documentos.

137
00:06:48,310 --> 00:06:51,310
‫Entonces, al final, el número de calificaciones será

138
00:06:51,310 --> 00:06:55,130
‫cinco, y nuevamente, porque, por supuesto, tenemos cinco documentos de revisión.

139
00:06:55,130 --> 00:06:57,083
‫Entonces eso tiene sentido, ¿verdad?

140
00:06:58,532 --> 00:07:03,532
‫Luego también la calificación promedio, que al igual que antes usamos el

141
00:07:03,970 --> 00:07:08,970
‫operador promedio y esto debe estar dentro de un objeto y

142
00:07:09,180 --> 00:07:10,013
‫aquí

143
00:07:12,490 --> 00:07:14,440
‫el nombre del campo

144
00:07:15,470 --> 00:07:18,330
‫que es la calificación, a la derecha.

145
00:07:18,330 --> 00:07:22,180
‫Así que recuerde que cada reseña tiene un campo de calificación.

146
00:07:22,180 --> 00:07:24,993
‫De ahí es donde queremos calcular el promedio.

147
00:07:27,720 --> 00:07:30,350
‫Está bien, y eso es todo.

148
00:07:30,350 --> 00:07:32,950
‫Entonces, el número y el promedio

149
00:07:32,950 --> 00:07:36,790
‫de calificaciones es exactamente lo que queríamos calcular en esta agregación.

150
00:07:36,790 --> 00:07:39,740
‫Ahora tenga en cuenta que esto en realidad

151
00:07:39,740 --> 00:07:43,290
‫devuelve una promesa y, por lo tanto, debemos esperarlo y

152
00:07:43,290 --> 00:07:46,193
‫luego almacenarlo en una variable llamada stats.

153
00:07:49,070 --> 00:07:49,980
‫Bueno.

154
00:07:49,980 --> 00:07:53,023
‫Luego marque este aquí como asíncrono también,

155
00:07:54,600 --> 00:07:55,620
‫déle un

156
00:07:55,620 --> 00:07:59,790
‫guardado y ahora realmente necesitamos usar esa variable de estadísticas.

157
00:07:59,790 --> 00:08:02,930
‫Por ahora, todo lo que realmente quiero hacer

158
00:08:02,930 --> 00:08:06,073
‫para probar esto es registrar las estadísticas en la consola.

159
00:08:08,120 --> 00:08:09,090
‫Consola. estadísticas

160
00:08:10,600 --> 00:08:11,433
‫de registro.

161
00:08:13,640 --> 00:08:16,880
‫Bien, entonces en el paso posterior realmente querremos, como mencioné

162
00:08:16,880 --> 00:08:19,950
‫antes, luego actualizar el documento de viaje con estas estadísticas,

163
00:08:19,950 --> 00:08:21,770
‫pero lo dejaré para un

164
00:08:21,770 --> 00:08:23,930
‫poco más tarde, porque por ahora

165
00:08:23,930 --> 00:08:26,070
‫realmente necesitamos llamar a este método

166
00:08:26,070 --> 00:08:28,390
‫aquí en alguna parte. , porque de

167
00:08:28,390 --> 00:08:31,133
‫lo contrario nunca se llamarán las estadísticas aquí.

168
00:08:32,100 --> 00:08:33,863
‫Y recuerde cómo dijimos al

169
00:08:33,863 --> 00:08:36,160
‫principio que haremos esto usando middleware cada

170
00:08:36,160 --> 00:08:38,523
‫vez que se cree una nueva revisión.

171
00:08:40,050 --> 00:08:44,250
‫Así que implementemos eso usando reviewSchema antes de guardar

172
00:08:45,330 --> 00:08:46,163
‫y

173
00:08:50,680 --> 00:08:54,563
‫luego solo nuestra función normal de middleware aquí.

174
00:08:55,860 --> 00:08:57,873
‫Y recuerde que en este

175
00:08:57,873 --> 00:09:00,093
‫tipo de middleware, esta palabra clave apunta

176
00:09:00,093 --> 00:09:02,210
‫al documento que se está guardando actualmente.

177
00:09:02,210 --> 00:09:04,760
‫Así que esto apunta a la

178
00:09:06,540 --> 00:09:08,850
‫revisión actual, está bien.

179
00:09:08,850 --> 00:09:11,880
‫Así que querremos llamar a la función

180
00:09:11,880 --> 00:09:15,020
‫calcAverageRating usando this. gira, a la derecha.

181
00:09:15,020 --> 00:09:18,770
‫Ahora, ¿cómo vamos a llamar realmente a esta función?

182
00:09:18,770 --> 00:09:19,940
‫Recuerda cómo dije

183
00:09:19,940 --> 00:09:22,470
‫que esta función está disponible en el modelo.

184
00:09:22,470 --> 00:09:25,050
‫Así que, básicamente, me gusta

185
00:09:25,050 --> 00:09:27,390
‫esta reseña. calcAverageRatings y luego,

186
00:09:29,557 --> 00:09:32,550
‫como dije, queremos usar esto. gira, está

187
00:09:34,340 --> 00:09:35,173
‫bien.

188
00:09:35,173 --> 00:09:37,240
‫Y nuevamente, porque esta es la

189
00:09:37,240 --> 00:09:40,340
‫revisión actual y este es el ID del recorrido

190
00:09:40,340 --> 00:09:42,143
‫que pasaremos dentro de calcAverageRatings.

191
00:09:43,640 --> 00:09:46,950
‫Ahora el problema es que en este punto aquí en el

192
00:09:46,950 --> 00:09:50,200
‫código la variable de revisión aún no está definida.

193
00:09:50,200 --> 00:09:53,340
‫Ahora podría pensar que la solución simple sería simplemente

194
00:09:53,340 --> 00:09:57,780
‫mover este código aquí después de esta declaración de revisión, pero desafortunadamente eso

195
00:09:57,780 --> 00:10:00,480
‫no va a funcionar, porque al igual que

196
00:10:00,480 --> 00:10:03,630
‫en Express, este código aquí básicamente se ejecuta en la

197
00:10:03,630 --> 00:10:05,730
‫secuencia en que se declaró.

198
00:10:05,730 --> 00:10:08,100
‫Entonces, si pusiéramos este código aquí después

199
00:10:08,100 --> 00:10:11,550
‫de la declaración de revisión, entonces este esquema de revisión

200
00:10:11,550 --> 00:10:13,810
‫aquí no contendría este middleware, porque

201
00:10:13,810 --> 00:10:16,050
‫solo lo declararíamos después de que

202
00:10:16,050 --> 00:10:19,750
‫el modelo de revisión ya se haya creado, está bien, pero

203
00:10:19,750 --> 00:10:23,160
‫afortunadamente todavía hay una forma de evitar esto y eso

204
00:10:23,160 --> 00:10:26,273
‫es usar esto. constructor.

205
00:10:28,970 --> 00:10:31,640
‫Entonces esto aquí todavía apunta al modelo.

206
00:10:31,640 --> 00:10:35,267
‫Ya sabes, básicamente, nuevamente, este es el documento actual

207
00:10:35,267 --> 00:10:38,030
‫y el constructor es básicamente el

208
00:10:38,030 --> 00:10:40,470
‫modelo que creó ese documento.

209
00:10:40,470 --> 00:10:42,410
‫Así que esto aquí

210
00:10:42,410 --> 00:10:45,823
‫representa la gira y entonces podemos simplemente hacerlo así.

211
00:10:47,420 --> 00:10:52,043
‫Luego llame a next como siempre y eso es todo.

212
00:10:54,130 --> 00:10:57,320
‫Así que sigamos adelante y probemos esto.

213
00:10:57,320 --> 00:11:00,500
‫Y para hacer eso, crearé una nueva gira primero,

214
00:11:00,500 --> 00:11:02,670
‫porque las otras que ya tenemos

215
00:11:02,670 --> 00:11:04,620
‫tienen el promedio y la

216
00:11:04,620 --> 00:11:06,730
‫cantidad de calificaciones ya calculadas, por

217
00:11:06,730 --> 00:11:10,240
‫lo que realmente queremos comenzar desde cero aquí cuando prueben esto.

218
00:11:10,240 --> 00:11:13,270
‫Entonces, para crear un nuevo recorrido, debemos iniciar

219
00:11:13,270 --> 00:11:16,840
‫sesión como administradores, y creo que actualmente lo estamos, pero

220
00:11:16,840 --> 00:11:18,940
‫solo para asegurarnos, hagámoslo nuevamente.

221
00:11:20,400 --> 00:11:21,233
‫Bueno.

222
00:11:22,660 --> 00:11:24,981
‫Así que esta es la nueva gira de prueba.

223
00:11:24,981 --> 00:11:28,313
‫Muy bien, eliminemos estos aquí, no son obligatorios, y

224
00:11:30,120 --> 00:11:32,663
‫creo que con esto estamos listos.

225
00:11:36,950 --> 00:11:40,580
‫Muy bien, y aquí puede ver los valores predeterminados que establecimos

226
00:11:40,580 --> 00:11:43,130
‫antes, así que las calificaciones promedian

227
00:11:43,130 --> 00:11:46,430
‫cinco y la cantidad se establece en cero, está bien.

228
00:11:46,430 --> 00:11:49,630
‫Ahora, para crear una nueva revisión, en realidad

229
00:11:49,630 --> 00:11:52,560
‫necesitamos iniciar sesión como un usuario regular, no

230
00:11:52,560 --> 00:11:54,033
‫como un administrador.

231
00:11:54,900 --> 00:11:58,900
‫Entonces, digamos que es un usuario normal.

232
00:11:58,900 --> 00:12:02,120
‫Así que usemos a esta Laura aquí.

233
00:12:02,120 --> 00:12:03,470
‫Así que Laura @ ejemplo. com

234
00:12:04,804 --> 00:12:08,063
‫y como mencioné anteriormente, la contraseña es siempre la misma.

235
00:12:12,000 --> 00:12:16,773
‫Así que hagámoslo y ahora crearemos una nueva reseña durante la gira.

236
00:12:17,920 --> 00:12:21,103
‫Así que ahora obtengamos el recorrido que creamos anteriormente,

237
00:12:22,890 --> 00:12:26,653
‫así que este ID y lo ponemos aquí en la URL.

238
00:12:27,880 --> 00:12:30,490
‫Bien, y recuerde que esta ruta ahora

239
00:12:30,490 --> 00:12:33,877
‫obtiene automáticamente un ID de recorrido de la URL

240
00:12:33,877 --> 00:12:37,413
‫y un ID de usuario del usuario actualmente conectado, de

241
00:12:38,730 --> 00:12:39,563
‫acuerdo.

242
00:12:39,563 --> 00:12:42,063
‫Así que usemos esta como la

243
00:12:44,490 --> 00:12:48,643
‫primera calificación, enviémosla y ahora quiero echar un vistazo a nuestra consola.

244
00:12:50,060 --> 00:12:53,230
‫Tenemos una salida aquí, pero por alguna razón es

245
00:12:53,230 --> 00:12:55,260
‫solo como esta matriz vacía.

246
00:12:55,260 --> 00:12:58,010
‫Entonces, algo no debe estar funcionando aquí.

247
00:12:58,010 --> 00:13:02,400
‫Así que echemos un vistazo a la ID del recorrido aquí

248
00:13:02,400 --> 00:13:07,200
‫solo para asegurarnos de que estamos obteniendo el valor correcto aquí, ID y

249
00:13:07,200 --> 00:13:09,340
‫también comentemos esta parte aquí

250
00:13:10,210 --> 00:13:14,220
‫solo para ver si tal vez hay algún error en

251
00:13:14,220 --> 00:13:17,360
‫esta parte, así que intentemos ahora de nuevo.

252
00:13:17,360 --> 00:13:20,113
‫Simplemente agregaré el mismo aquí nuevamente, está bien.

253
00:13:23,680 --> 00:13:26,453
‫Bien, ahora tenemos algo.

254
00:13:27,310 --> 00:13:29,790
‫Así que tenemos esta revisión que

255
00:13:29,790 --> 00:13:32,210
‫es la que creamos inicialmente.

256
00:13:32,210 --> 00:13:34,900
‫Entonces comienza con este ac15,

257
00:13:34,900 --> 00:13:39,623
‫pero el que acabo de crear es este 66d, está bien.

258
00:13:39,623 --> 00:13:44,223
‫Así que echemos un vistazo a eso aquí en Compass.

259
00:13:45,490 --> 00:13:47,223
‫Entonces tenemos que ir a la última página.

260
00:13:49,380 --> 00:13:52,450
‫De acuerdo, entonces el que aparece en nuestra consola

261
00:13:52,450 --> 00:13:55,270
‫es solo este de aquí, pero no el segundo

262
00:13:55,270 --> 00:13:57,730
‫que acabamos de crear, de acuerdo.

263
00:13:57,730 --> 00:13:59,670
‫Entonces, si ahora creamos un

264
00:13:59,670 --> 00:14:02,980
‫tercero, probablemente deberíamos ver el primero y el segundo.

265
00:14:02,980 --> 00:14:03,880
‫Así que intentemos eso.

266
00:14:12,060 --> 00:14:13,160
‫Bueno.

267
00:14:13,160 --> 00:14:16,290
‫Envíe este y ahora aquí, en

268
00:14:18,060 --> 00:14:20,830
‫nuestro resultado, obtengo los tres.

269
00:14:20,830 --> 00:14:23,793
‫Así que eso no tiene mucho sentido, pero de

270
00:14:24,800 --> 00:14:27,443
‫todos modos el punto que quería hacer aquí

271
00:14:27,443 --> 00:14:29,700
‫es que no deberíamos usar

272
00:14:29,700 --> 00:14:33,560
‫pre, sino que deberíamos usar el middleware post save, de acuerdo.

273
00:14:33,560 --> 00:14:35,520
‫Y eso se debe a que, antes

274
00:14:35,520 --> 00:14:37,350
‫de guardar, la reseña actual

275
00:14:37,350 --> 00:14:39,270
‫todavía no está realmente en la colección.

276
00:14:39,270 --> 00:14:42,420
‫Por lo tanto, cuando hagamos esta coincidencia aquí,

277
00:14:42,420 --> 00:14:45,170
‫no debería poder aparecer en la salida

278
00:14:45,170 --> 00:14:47,150
‫aquí, porque nuevamente en este

279
00:14:47,150 --> 00:14:51,000
‫momento no está realmente guardado en la colección todavía, de acuerdo.

280
00:14:51,000 --> 00:14:52,760
‫Por lo tanto, es mejor usar

281
00:14:52,760 --> 00:14:54,770
‫la publicación aquí, porque en ese momento,

282
00:14:54,770 --> 00:14:57,820
‫por supuesto, todos los documentos ya están guardados en la base

283
00:14:57,820 --> 00:14:59,330
‫de datos, por lo que

284
00:14:59,330 --> 00:15:02,430
‫es un buen momento para hacer este cálculo con todas las revisiones

285
00:15:02,430 --> 00:15:04,723
‫y luego almacenar el resultado en el recorrido. .

286
00:15:05,940 --> 00:15:07,750
‫De acuerdo, no estoy

287
00:15:07,750 --> 00:15:10,403
‫muy seguro de por qué este de aquí

288
00:15:11,670 --> 00:15:15,603
‫apareció en este punto, pero de todos modos, probémoslo con otro.

289
00:15:19,290 --> 00:15:21,280
‫Así que ese es el

290
00:15:21,280 --> 00:15:25,450
‫cuarto, y ahora obtenemos que el siguiente no es una función y,

291
00:15:25,450 --> 00:15:27,930
‫de hecho, como mencioné anteriormente, el middleware

292
00:15:27,930 --> 00:15:30,250
‫de la publicación no tiene acceso al

293
00:15:30,250 --> 00:15:33,940
‫siguiente y, por lo tanto, por supuesto, no podemos llamarlo, no

294
00:15:33,940 --> 00:15:34,833
‫podemos usarlo.

295
00:15:37,070 --> 00:15:40,793
‫De acuerdo, y aquí tenemos nuestra próxima calificación, de

296
00:15:42,160 --> 00:15:42,993
‫acuerdo.

297
00:15:42,993 --> 00:15:45,913
‫Así que ahora también aparece aquí.

298
00:15:48,090 --> 00:15:50,840
‫Así que no necesitamos eso y ahora podemos intentar

299
00:15:50,840 --> 00:15:53,053
‫calcular nuestras estadísticas con seguridad aquí.

300
00:15:54,140 --> 00:15:56,600
‫Guárdelo y, de hecho, eliminemos

301
00:15:56,600 --> 00:15:59,000
‫todas estas revisiones.

302
00:15:59,000 --> 00:16:03,623
‫Así que básicamente quiero empezar de cero, está bien.

303
00:16:04,880 --> 00:16:05,800
‫Entonces, todas

304
00:16:08,320 --> 00:16:11,190
‫estas cinco revisiones aquí deberían estar listas y

305
00:16:16,300 --> 00:16:18,450
‫ahora estamos listos para comenzar.

306
00:16:18,450 --> 00:16:21,030
‫Así que creemos este como el primero

307
00:16:22,860 --> 00:16:26,400
‫y ahora sigamos adelante, echemos un vistazo a nuestras estadísticas

308
00:16:26,400 --> 00:16:27,600
‫y aquí vamos.

309
00:16:27,600 --> 00:16:29,530
‫Así que esta es la ID

310
00:16:29,530 --> 00:16:31,670
‫actual del tour, entonces el número de calificaciones es

311
00:16:31,670 --> 00:16:33,703
‫uno y el promedio es, por supuesto, tres.

312
00:16:35,510 --> 00:16:39,240
‫Entonces, si agregamos otro con la calificación de cinco, entonces el

313
00:16:40,920 --> 00:16:43,310
‫promedio debería ser cuatro y deberíamos

314
00:16:43,310 --> 00:16:46,010
‫tener el número de calificaciones igual a dos.

315
00:16:47,840 --> 00:16:52,460
‫Así que intentemos eso y, de hecho, como dije,

316
00:16:52,460 --> 00:16:55,480
‫dos calificaciones, promedio de cuatro.

317
00:16:55,480 --> 00:16:59,010
‫Y solo otro solo para estar realmente seguro,

318
00:16:59,010 --> 00:17:00,610
‫agreguemos otro con

319
00:17:05,600 --> 00:17:07,240
‫cinco, y aquí vamos.

320
00:17:07,240 --> 00:17:08,073
‫Excelente.

321
00:17:08,073 --> 00:17:10,990
‫Así que ahora estamos calculando correctamente las estadísticas, pero,

322
00:17:10,990 --> 00:17:13,090
‫por supuesto, aún no se

323
00:17:13,090 --> 00:17:15,290
‫mantienen en el documento de viaje actual.

324
00:17:15,290 --> 00:17:18,630
‫Entonces, si venimos aquí en Compass a la gira

325
00:17:18,630 --> 00:17:20,293
‫que acabamos de crear,

326
00:17:22,330 --> 00:17:24,340
‫probablemente sea la última aquí.

327
00:17:24,340 --> 00:17:27,790
‫Sí, entonces nuestro recorrido de prueba, todavía tiene estos valores

328
00:17:27,790 --> 00:17:30,470
‫predeterminados de 4. 5 y cero, está

329
00:17:30,470 --> 00:17:31,350
‫bien.

330
00:17:31,350 --> 00:17:33,260
‫Así que ahora es el

331
00:17:33,260 --> 00:17:36,573
‫momento de conservar las estadísticas calculadas en este documento de

332
00:17:38,250 --> 00:17:39,480
‫viaje, de acuerdo.

333
00:17:39,480 --> 00:17:41,670
‫Y entonces hagámoslo.

334
00:17:41,670 --> 00:17:44,420
‫En primer lugar, para poder

335
00:17:44,420 --> 00:17:47,863
‫hacer eso, necesitamos el modelo de gira, ¿verdad?

336
00:17:48,810 --> 00:17:49,643
‫Así que

337
00:17:51,620 --> 00:17:52,453
‫el tour

338
00:17:55,250 --> 00:17:56,483
‫requiere y ahí vamos.

339
00:18:03,860 --> 00:18:07,010
‫Entonces, lo que tenemos que hacer es básicamente

340
00:18:07,010 --> 00:18:10,160
‫encontrar el recorrido actual y luego actualizarlo.

341
00:18:10,160 --> 00:18:13,873
‫Así que lo hicimos antes muchas veces,

342
00:18:14,830 --> 00:18:16,980
‫findById y actualiza, está

343
00:18:16,980 --> 00:18:17,813
‫bien.

344
00:18:17,813 --> 00:18:21,370
‫Y el ID es, por supuesto, el ID del recorrido que

345
00:18:21,370 --> 00:18:23,670
‫se pasó a la función y

346
00:18:23,670 --> 00:18:27,140
‫luego un objeto de los datos que realmente queremos actualizar.

347
00:18:27,140 --> 00:18:30,470
‫Así que obtengamos estos nombres de campo de aquí.

348
00:18:30,470 --> 00:18:32,500
‫Así que tenemos ratingsQuantity por

349
00:18:34,970 --> 00:18:36,230
‫un lado.

350
00:18:36,230 --> 00:18:39,260
‫Pongámoslo aquí a uno por ahora solo

351
00:18:39,260 --> 00:18:41,240
‫para que no obtengamos un

352
00:18:41,240 --> 00:18:42,893
‫error y ratingsAverage.

353
00:18:46,910 --> 00:18:48,940
‫De nuevo, para evitar errores,

354
00:18:48,940 --> 00:18:50,650
‫porque ahora quiero venir

355
00:18:50,650 --> 00:18:53,400
‫aquí y echar un vistazo a estas estadísticas.

356
00:18:53,400 --> 00:18:57,700
‫Entonces ves que están almacenados en una matriz en realidad, está bien.

357
00:18:57,700 --> 00:19:00,870
‫Así que tenemos que ir a la primera posición de esa matriz, que

358
00:19:00,870 --> 00:19:02,433
‫es donde está este objeto.

359
00:19:04,520 --> 00:19:07,060
‫Entonces, las estadísticas en la posición

360
00:19:07,970 --> 00:19:12,820
‫cero y luego de allí obtenemos la propiedad de calificación final, está

361
00:19:12,820 --> 00:19:13,653
‫bien.

362
00:19:13,653 --> 00:19:14,593
‫Así que este de aquí.

363
00:19:18,440 --> 00:19:21,283
‫Y luego, por supuesto, lo mismo para la calificación promedio.

364
00:19:23,870 --> 00:19:24,800
‫Bueno.

365
00:19:24,800 --> 00:19:27,070
‫Y ahora también tenemos que esperarlo.

366
00:19:27,070 --> 00:19:31,640
‫Entonces, como siempre, esto devuelve una premisa y así podemos esperarlo.

367
00:19:31,640 --> 00:19:34,750
‫Ahora también podríamos almacenar el resultado de esto en una variable,

368
00:19:34,750 --> 00:19:37,250
‫pero realmente no necesitamos el recorrido en absoluto.

369
00:19:37,250 --> 00:19:39,530
‫Todo lo que queremos hacer es actualizarlo realmente, por

370
00:19:39,530 --> 00:19:40,880
‫lo que no almacenamos

371
00:19:40,880 --> 00:19:43,700
‫el valor de los resultados de la premisa en ningún lugar.

372
00:19:43,700 --> 00:19:44,960
‫Bueno.

373
00:19:44,960 --> 00:19:49,960
‫Así que simplemente intentemos agregar otra reseña aquí,

374
00:19:50,050 --> 00:19:53,373
‫esta vez con una terrible.

375
00:19:55,800 --> 00:19:56,810
‫Bueno.

376
00:19:56,810 --> 00:20:00,650
‫Y antes que nada, echemos un vistazo a las estadísticas.

377
00:20:00,650 --> 00:20:03,300
‫Entonces, por supuesto, obtenemos la calificación de cuatro, por lo que el número

378
00:20:03,300 --> 00:20:06,203
‫de calificaciones y el promedio de 3. 5.

379
00:20:07,270 --> 00:20:10,090
‫Entonces, ahora para ver realmente si funcionó, echemos

380
00:20:10,090 --> 00:20:13,290
‫un vistazo a Compass o también podemos usar u

381
00:20:13,290 --> 00:20:15,223
‫obtener el punto final del recorrido,

382
00:20:16,270 --> 00:20:17,320
‫de acuerdo.

383
00:20:17,320 --> 00:20:20,593
‫Entonces necesitamos el ID de la gira, que

384
00:20:23,550 --> 00:20:27,160
‫podemos copiar desde aquí, pegarlo aquí, y ahora

385
00:20:27,160 --> 00:20:30,060
‫llega el momento y de hecho

386
00:20:30,060 --> 00:20:31,110
‫funcionó, perfecto.

387
00:20:31,110 --> 00:20:34,940
‫Eso es increíble, absolutamente fantástico.

388
00:20:34,940 --> 00:20:37,810
‫Solo una vez más para divertirnos,

389
00:20:37,810 --> 00:20:39,893
‫agreguemos otra reseña aquí.

390
00:20:44,330 --> 00:20:45,163
‫Bueno.

391
00:20:45,163 --> 00:20:48,480
‫Actualice este, y ahora obtenemos cinco y

392
00:20:48,480 --> 00:20:51,760
‫nuestro promedio subió un poco.

393
00:20:51,760 --> 00:20:52,593
‫Excelente.

394
00:20:52,593 --> 00:20:56,570
‫Así que ahora tomemos un segundo y recapitulemos lo que hicimos aquí.

395
00:20:56,570 --> 00:20:59,690
‫Entonces comenzamos creando un método estático.

396
00:20:59,690 --> 00:21:01,770
‫Entonces, esta función completa aquí

397
00:21:01,770 --> 00:21:04,870
‫básicamente para crear las estadísticas del promedio y

398
00:21:04,870 --> 00:21:07,980
‫el número de calificaciones para el ID del

399
00:21:07,980 --> 00:21:12,230
‫recorrido para el que se creó la revisión actual, está bien.

400
00:21:12,230 --> 00:21:14,870
‫Y creamos esta función como un método

401
00:21:14,870 --> 00:21:18,030
‫estático, porque necesitábamos llamar a la función agregada en

402
00:21:18,030 --> 00:21:19,310
‫el modelo.

403
00:21:19,310 --> 00:21:22,080
‫Entonces, en un método estático, esta variable llama

404
00:21:22,080 --> 00:21:23,910
‫exactamente a un método.

405
00:21:23,910 --> 00:21:26,670
‫Por eso es muy útil en estos casos.

406
00:21:26,670 --> 00:21:29,930
‫Así que construimos nuestra canalización de agregación aquí, donde

407
00:21:29,930 --> 00:21:32,590
‫seleccionamos todas las reseñas que coincidían con

408
00:21:32,590 --> 00:21:35,880
‫el ID de viaje actual, y luego se calculan

409
00:21:35,880 --> 00:21:38,470
‫las estadísticas de todas estas reseñas.

410
00:21:38,470 --> 00:21:40,520
‫Luego, una vez hecho

411
00:21:40,520 --> 00:21:45,470
‫esto, guardamos las estadísticas en el recorrido actual, de acuerdo.

412
00:21:45,470 --> 00:21:47,690
‫Luego, para usar esta función,

413
00:21:47,690 --> 00:21:52,570
‫la llamamos después de que se haya creado una nueva revisión, está bien.

414
00:21:52,570 --> 00:21:55,620
‫Para eso necesitamos usar esto. constructor porque esto

415
00:21:55,620 --> 00:21:58,930
‫es lo que apunta al modelo actual.

416
00:21:58,930 --> 00:22:02,037
‫Ahora tenga en cuenta cómo dijimos que también queremos

417
00:22:02,037 --> 00:22:06,350
‫actualizar las estadísticas cada vez que se edita o elimina una revisión,

418
00:22:06,350 --> 00:22:08,090
‫porque estas acciones, por

419
00:22:08,090 --> 00:22:11,210
‫supuesto, también influirán en el número y el promedio.

420
00:22:11,210 --> 00:22:13,960
‫Sin embargo, hacerlo es un poco más complejo.

421
00:22:13,960 --> 00:22:18,140
‫Entonces, dado que este video ya se está ejecutando

422
00:22:18,140 --> 00:22:20,493
‫bastante, dejémoslo para el siguiente.

