﻿1
00:00:01,010 --> 00:00:03,970
‫Instructor: Muy bien, y ahora solo para

2
00:00:03,970 --> 00:00:07,183
‫terminar esta parte, creemos algunas fábricas para obtener documentos.

3
00:00:08,740 --> 00:00:11,963
‫Y comencemos con getOne aquí, ¿de acuerdo?

4
00:00:12,910 --> 00:00:17,910
‫Exportaciones. getOne, pero este es un poco más complicado,

5
00:00:18,580 --> 00:00:20,690
‫y eso se debe a que tenemos

6
00:00:20,690 --> 00:00:22,710
‫un populate en el controlador getTour.

7
00:00:22,710 --> 00:00:24,803
‫Entonces, echemos un vistazo a eso.

8
00:00:25,900 --> 00:00:30,090
‫Entonces, aquí mismo, en este, tenemos este poblado aquí, que es

9
00:00:30,090 --> 00:00:32,570
‫diferente de todos los demás controladores

10
00:00:32,570 --> 00:00:35,220
‫de get en los otros recursos, ¿verdad?

11
00:00:35,220 --> 00:00:37,620
‫Pero, bueno, esto no

12
00:00:37,620 --> 00:00:40,670
‫es realmente un problema porque simplemente nos

13
00:00:40,670 --> 00:00:45,670
‫permitiremos pasar un objeto populate options a nuestra función getOne, ¿de acuerdo?

14
00:00:48,030 --> 00:00:50,840
‫Entonces, en lugar de simplemente

15
00:00:50,840 --> 00:00:55,700
‫pasar el modelo, también tendremos populate, entonces opciones, está bien.

16
00:00:57,890 --> 00:01:00,370
‫Y así, a partir de aquí, devolveremos la

17
00:01:00,370 --> 00:01:02,053
‫función de controlador normal.

18
00:01:03,360 --> 00:01:06,563
‫Entonces, sigamos adelante y copiemos de nuevo todo esto,

19
00:01:10,850 --> 00:01:11,683
‫está bien.

20
00:01:13,730 --> 00:01:15,330
‫Entonces, no necesitamos este aquí.

21
00:01:17,690 --> 00:01:19,743
‫Entonces aquí, como siempre,

22
00:01:23,140 --> 00:01:25,800
‫es modelo, y aquí está doc.

23
00:01:25,800 --> 00:01:27,993
‫Bueno, en realidad aquí, documento,

24
00:01:30,520 --> 00:01:33,850
‫y aquí, una vez más, datos iguales a doc.

25
00:01:33,850 --> 00:01:36,210
‫Ahora, también necesitamos hacer algunos cambios

26
00:01:36,210 --> 00:01:38,390
‫aquí debido a este poblado, así

27
00:01:38,390 --> 00:01:41,610
‫que básicamente, primero crearemos la consulta, y luego,

28
00:01:41,610 --> 00:01:44,950
‫si existe el objeto de opciones poblar, luego lo

29
00:01:44,950 --> 00:01:46,550
‫agregaremos a la

30
00:01:46,550 --> 00:01:50,810
‫consulta, y luego por el final, espera esa consulta, ¿de acuerdo?

31
00:01:50,810 --> 00:01:51,643
‫¿Tener sentido?

32
00:01:53,390 --> 00:01:55,890
‫Entonces, traduzcamos lo que acabo de decir.

33
00:01:55,890 --> 00:02:00,773
‫Entonces, la consulta es simplemente igual a Model. findById, así,

34
00:02:02,770 --> 00:02:04,993
‫¿verdad?

35
00:02:06,630 --> 00:02:10,980
‫Entonces, si hay un objeto de opciones rellenar,

36
00:02:10,980 --> 00:02:12,193
‫bueno,

37
00:02:13,420 --> 00:02:15,020
‫entonces, en ese

38
00:02:15,020 --> 00:02:20,020
‫caso, la consulta será consulta. rellenar con las opciones de rellenar, ¿de acuerdo?

39
00:02:24,410 --> 00:02:27,370
‫Y luego, finalmente esperamos nuestra consulta y la

40
00:02:27,370 --> 00:02:28,853
‫guardamos en el documento.

41
00:02:30,010 --> 00:02:35,010
‫Entonces, espere una consulta como esta, de acuerdo.

42
00:02:36,210 --> 00:02:38,660
‫Y entonces, eso es todo.

43
00:02:38,660 --> 00:02:40,360
‫Entonces, esta lógica que

44
00:02:40,360 --> 00:02:43,200
‫tenemos aquí no espera la consulta de inmediato, sino

45
00:02:43,200 --> 00:02:45,300
‫que simplemente la guarda en una

46
00:02:45,300 --> 00:02:48,220
‫variable, para que podamos, en el siguiente paso, manipularla.

47
00:02:48,220 --> 00:02:50,770
‫De hecho, ya hicimos este tipo de

48
00:02:50,770 --> 00:02:54,020
‫cosas antes cuando estábamos construyendo nuestras funciones de API, ¿verdad?

49
00:02:54,020 --> 00:02:57,210
‫Entonces, solo al final, cuando toda la consulta esté lista,

50
00:02:57,210 --> 00:03:00,563
‫la esperaremos y la almacenaremos en algún lugar de una variable.

51
00:03:02,260 --> 00:03:06,600
‫Ahora, sigamos adelante y usemos este en todas partes, comenzando,

52
00:03:06,600 --> 00:03:08,803
‫por supuesto, con el Tour.

53
00:03:10,470 --> 00:03:12,170
‫Entonces, getTour ahora será

54
00:03:13,670 --> 00:03:15,473
‫de fábrica. getOne,

55
00:03:18,260 --> 00:03:20,900
‫y pase el Tour y

56
00:03:20,900 --> 00:03:24,440
‫rellene el objeto de opciones, ¿lo recuerda?

57
00:03:24,440 --> 00:03:29,440
‫Entonces, lo que vamos a hacer es decir ruta y reseñas.

58
00:03:31,590 --> 00:03:35,540
‫Bien, recuerde que la propiedad de la ruta es

59
00:03:35,540 --> 00:03:37,720
‫básicamente el campo

60
00:03:37,720 --> 00:03:40,950
‫que queremos llenar, y luego también podemos

61
00:03:40,950 --> 00:03:43,750
‫especificar select, así que recuerde este,

62
00:03:43,750 --> 00:03:47,770
‫donde especificamos cuál de los campos queremos obtener, ¿verdad?

63
00:03:47,770 --> 00:03:48,603
‫Pero en

64
00:03:48,603 --> 00:03:50,050
‫este caso, no tenemos nada

65
00:03:50,050 --> 00:03:51,900
‫de eso, así que dejémoslo así.

66
00:03:53,180 --> 00:03:57,723
‫Y ahora, podemos continuar y eliminar todo esto.

67
00:03:58,910 --> 00:04:00,570
‫Que bien.

68
00:04:00,570 --> 00:04:03,473
‫Y, solo para asegurarnos, probemos esto rápidamente.

69
00:04:06,200 --> 00:04:07,963
‫Entonces, obtendremos un determinado Tour y,

70
00:04:10,880 --> 00:04:12,630
‫de hecho, todavía funciona.

71
00:04:12,630 --> 00:04:15,503
‫Veamos si este tiene algunas críticas.

72
00:04:16,630 --> 00:04:19,210
‫Oh, sí, de hecho lo hace,

73
00:04:19,210 --> 00:04:22,993
‫y ves que el proceso de población también sigue funcionando.

74
00:04:24,920 --> 00:04:28,177
‫Entonces, eso fue exitoso, diría yo.

75
00:04:28,177 --> 00:04:30,870
‫Y entonces, ahora usemos también este getOne en

76
00:04:30,870 --> 00:04:32,710
‫todos los demás recursos.

77
00:04:32,710 --> 00:04:36,833
‫Entonces, el controlador de usuario aquí donde tenemos, veamos

78
00:04:38,200 --> 00:04:40,603
‫dónde está, ah, aquí abajo.

79
00:04:43,760 --> 00:04:47,047
‫Entonces, digamos fábrica. getOne, pero solo

80
00:04:48,930 --> 00:04:52,290
‫con el modelo de usuario y sin objeto

81
00:04:52,290 --> 00:04:54,343
‫de opciones de relleno.

82
00:04:56,900 --> 00:04:58,740
‫De acuerdo, y ya que

83
00:04:58,740 --> 00:05:02,030
‫estamos aquí, cambiemos el mensaje de error aquí para

84
00:05:02,030 --> 00:05:03,850
‫crear usuario, de

85
00:05:03,850 --> 00:05:07,583
‫modo que esta ruta no esté definida, nunca lo estará,

86
00:05:08,980 --> 00:05:11,703
‫y use el registro en su lugar.

87
00:05:17,010 --> 00:05:19,110
‫A continuación, y

88
00:05:19,110 --> 00:05:23,410
‫finalmente, lo mismo para las revisiones básicamente.

89
00:05:23,410 --> 00:05:25,063
‫Entonces, exportaciones. getReview es

90
00:05:29,018 --> 00:05:31,427
‫igual de fábrica. getOne review,

91
00:05:35,450 --> 00:05:40,193
‫y creo que aún no tenemos (murmura) nuestras rutas.

92
00:05:41,360 --> 00:05:46,357
‫Y, de hecho, no lo hacemos, así que agregando esto muy

93
00:05:46,357 --> 00:05:49,107
‫rápido aquí, reviewController. getReview, ¿de acuerdo?

94
00:05:54,300 --> 00:05:56,423
‫Probemos rápidamente este también, solo

95
00:05:58,870 --> 00:06:01,300
‫porque también quiero agregarlo aquí a

96
00:06:01,300 --> 00:06:03,203
‫Postman, ¿de acuerdo?

97
00:06:04,950 --> 00:06:08,453
‫Entonces, simplemente copiando este porque es similar, y luego,

98
00:06:10,560 --> 00:06:12,393
‫de hecho, es get.

99
00:06:15,300 --> 00:06:20,300
‫Y, sí, funciona perfectamente bien, guárdelo aquí en reseñas

100
00:06:23,730 --> 00:06:24,987
‫y obtengaReview.

101
00:06:28,258 --> 00:06:30,560
‫Muy bien, ahora todo

102
00:06:30,560 --> 00:06:35,560
‫lo que falta es básicamente una función de fábrica getAll, ¿verdad?

103
00:06:36,070 --> 00:06:37,320
‫Entonces, básicamente,

104
00:06:39,200 --> 00:06:42,380
‫para reemplazar este getAllTours, getAllUsers, que también deberíamos

105
00:06:42,380 --> 00:06:46,003
‫tener en algún lugar aquí, así que getAllUsers y

106
00:06:46,970 --> 00:06:50,530
‫también getAllReviews, así que copiemos nuevamente aquí desde el

107
00:06:50,530 --> 00:06:53,540
‫controlador Tour porque en realidad este es

108
00:06:53,540 --> 00:06:56,380
‫el que está realmente completo porque

109
00:06:56,380 --> 00:06:59,920
‫tiene todo estas características de la API y, por

110
00:06:59,920 --> 00:07:03,390
‫lo tanto, después de crear nuestra función de fábrica

111
00:07:03,390 --> 00:07:07,083
‫getAll, los tres recursos obtendrán estas características de la API.

112
00:07:09,299 --> 00:07:12,840
‫De nuevo, copiando todo esto,

113
00:07:15,230 --> 00:07:17,433
‫exporta. getAll,

114
00:07:24,630 --> 00:07:28,390
‫por lo que ahora, en realidad tendremos que

115
00:07:28,390 --> 00:07:29,743
‫requerir estas características

116
00:07:31,690 --> 00:07:35,780
‫de API aquí, y de hecho podemos eliminarlo de

117
00:07:35,780 --> 00:07:38,320
‫aquí porque ya no lo

118
00:07:38,320 --> 00:07:43,277
‫necesitaremos porque ahora lo transferimos a la fábrica de controladores, ¿verdad?

119
00:07:45,360 --> 00:07:49,403
‫Ahora, aquí todo lo que tenemos que hacer es reemplazar,

120
00:07:50,370 --> 00:07:53,243
‫como siempre, con el modelo, y luego aquí,

121
00:07:56,300 --> 00:07:58,703
‫el documento y los datos.

122
00:08:01,700 --> 00:08:03,253
‫Ahora bien, perfecto.

123
00:08:07,480 --> 00:08:09,133
‫Entonces, veamos

124
00:08:13,947 --> 00:08:17,453
‫si esto funciona, getAll con Tour.

125
00:08:22,530 --> 00:08:25,530
‫Y ahora, realmente quiero ver si esto

126
00:08:25,530 --> 00:08:28,300
‫todavía funciona con todas estas características,

127
00:08:28,300 --> 00:08:31,380
‫por lo que está aquí, getAll Tours,

128
00:08:31,380 --> 00:08:33,830
‫y entonces, agreguemos nuestra

129
00:08:33,830 --> 00:08:38,467
‫cadena de consulta aquí, y digamos una duración mayor o

130
00:08:43,040 --> 00:08:47,063
‫igual que digamos un 10, y ordenamos por precio.

131
00:08:50,470 --> 00:08:53,133
‫Bien, obtenemos dos resultados aquí.

132
00:08:56,170 --> 00:08:58,490
‫Está bien, no está funcionando.

133
00:08:58,490 --> 00:09:03,030
‫De todos modos, aquí obtenemos los dos resultados (risas), y

134
00:09:03,030 --> 00:09:06,290
‫ambos tienen una duración superior a 10,

135
00:09:06,290 --> 00:09:09,360
‫y el precio es 1497,

136
00:09:09,360 --> 00:09:13,420
‫y el segundo es más alto, ¿de acuerdo?

137
00:09:13,420 --> 00:09:15,810
‫Pongámoslo aquí como siete, para que obtengamos

138
00:09:15,810 --> 00:09:17,673
‫un poco más de resultados.

139
00:09:19,949 --> 00:09:21,249
‫Bien, y ahora tenemos cinco.

140
00:09:23,560 --> 00:09:27,480
‫Bien, de todos modos, ahora hagamos lo mismo con las revisiones

141
00:09:28,910 --> 00:09:32,440
‫porque estoy muy emocionado de probar estas funciones de API

142
00:09:32,440 --> 00:09:34,350
‫en las revisiones también.

143
00:09:34,350 --> 00:09:36,510
‫Ahora, un problema que tenemos aquí

144
00:09:36,510 --> 00:09:39,740
‫es que este controlador de ruta en realidad tiene estas dos

145
00:09:40,706 --> 00:09:44,610
‫líneas de código que todos los demás controladores getAll no tienen, ¿de acuerdo?

146
00:09:44,610 --> 00:09:47,730
‫Pero, lo que vamos a hacer aquí es simplemente copiar este

147
00:09:47,730 --> 00:09:50,730
‫código en nuestra fábrica de controladores también, ¿de acuerdo?

148
00:09:50,730 --> 00:09:52,150
‫Eso es una

149
00:09:52,150 --> 00:09:56,040
‫especie de truco porque realmente solo necesitamos este para obtener

150
00:09:56,040 --> 00:09:59,210
‫todas las revisiones, pero solucionar esto sería demasiado

151
00:09:59,210 --> 00:10:02,500
‫trabajo aquí en esta situación, y una vez más,

152
00:10:02,500 --> 00:10:05,623
‫simplemente quiero mantenerlo simple aquí, de acuerdo.

153
00:10:07,010 --> 00:10:08,593
‫Entonces, copiemos

154
00:10:10,530 --> 00:10:15,150
‫esto aquí, y estoy agregando un comentario aquí

155
00:10:16,500 --> 00:10:21,500
‫para permitir getReviews anidados en el Tour, ¿de acuerdo?

156
00:10:24,980 --> 00:10:29,533
‫Entonces, este filtro, también lo pasaremos aquí, ¿de acuerdo?

157
00:10:31,260 --> 00:10:33,363
‫De nuevo, este es un

158
00:10:35,400 --> 00:10:37,460
‫pequeño truco, pero lo

159
00:10:37,460 --> 00:10:41,770
‫dejaré aquí así porque creo que es razonable, de acuerdo.

160
00:10:41,770 --> 00:10:44,223
‫De todos modos, ahora deshagámonos de esto,

161
00:10:45,260 --> 00:10:48,373
‫así que fábrica. getAll y revisar, ¿de acuerdo?

162
00:10:54,476 --> 00:10:57,493
‫Dejemos esto aquí junto a todos los demás.

163
00:11:02,430 --> 00:11:03,430
‫Y ahora,

164
00:11:03,430 --> 00:11:07,340
‫como puede ver, en realidad ya ni siquiera necesitamos este catchAsync aquí,

165
00:11:07,340 --> 00:11:09,200
‫así que lo comentaré aquí

166
00:11:09,200 --> 00:11:12,300
‫porque, quién sabe, tal vez en el futuro lo

167
00:11:12,300 --> 00:11:15,523
‫necesitemos para alguna otra función de Middleware aquí, todos Derecha.

168
00:11:16,870 --> 00:11:18,660
‫Entonces, se ve bien

169
00:11:18,660 --> 00:11:21,783
‫y limpio, y ahora probemos las revisiones de getAll.

170
00:11:23,420 --> 00:11:28,420
‫Muy bien, guardemos los cambios aquí también.

171
00:11:30,240 --> 00:11:32,310
‫Estos no los necesitamos,

172
00:11:32,310 --> 00:11:36,143
‫pero en realidad quiero obtener todos los comentarios.

173
00:11:37,530 --> 00:11:39,743
‫Entonces, en este momento tenemos

174
00:11:40,980 --> 00:11:43,430
‫cuatro reseñas, por lo que ahora intentemos

175
00:11:43,430 --> 00:11:46,853
‫filtrar las reseñas solo con una calificación de cuatro, digamos.

176
00:11:48,860 --> 00:11:53,860
‫Entonces, cadena de consulta, calificación igual a cuatro.

177
00:11:57,820 --> 00:12:00,170
‫Ah, y realmente funciona,

178
00:12:00,170 --> 00:12:02,850
‫muy bien, eso es realmente bueno.

179
00:12:02,850 --> 00:12:06,780
‫Entonces, así, obtenemos acceso a todas estas funciones de

180
00:12:06,780 --> 00:12:11,780
‫API como filtrado, clasificación, paginación y todas esas cosas buenas que implementamos

181
00:12:11,810 --> 00:12:13,988
‫(risas) hace mucho tiempo en

182
00:12:13,988 --> 00:12:15,890
‫el curso, ¿verdad?

183
00:12:15,890 --> 00:12:17,380
‫Y también quiero

184
00:12:17,380 --> 00:12:21,423
‫asegurarme de que este getAll reviews on Tour también funcione.

185
00:12:22,300 --> 00:12:24,120
‫Entonces, revisemos eso,

186
00:12:24,120 --> 00:12:26,893
‫y sí, verá que realmente lo hace.

187
00:12:28,050 --> 00:12:30,380
‫Entonces, la identificación del Tour

188
00:12:30,380 --> 00:12:34,490
‫que tenemos aquí es exactamente la que está aquí y aquí.

189
00:12:34,490 --> 00:12:36,840
‫Entonces, ese también sigue

190
00:12:36,840 --> 00:12:39,580
‫funcionando, por lo que finalmente también

191
00:12:39,580 --> 00:12:44,060
‫usemos getAll para el controlador de usuario, de acuerdo.

192
00:12:44,060 --> 00:12:46,733
‫Entonces, básicamente reemplazando simplemente esto,

193
00:12:47,760 --> 00:12:52,760
‫así de fábrica. getAll user, de acuerdo.

194
00:12:55,180 --> 00:12:57,174
‫Y, de hecho,

195
00:12:57,174 --> 00:13:01,483
‫pongamos este aquí cerca de los demás, de acuerdo.

196
00:13:04,960 --> 00:13:06,910
‫Y luego este también, así que

197
00:13:06,910 --> 00:13:09,650
‫básicamente tener todos estos generados por las funciones

198
00:13:09,650 --> 00:13:11,590
‫de fábrica juntos, y

199
00:13:11,590 --> 00:13:14,383
‫luego todos los demás simplemente por encima de ellos.

200
00:13:15,800 --> 00:13:18,580
‫Muy bien, hagamos lo mismo aquí, este ya

201
00:13:18,580 --> 00:13:20,290
‫es agradable y limpio, y

202
00:13:20,290 --> 00:13:23,153
‫lo mismo para el controlador Tour, entonces, ¿qué

203
00:13:24,170 --> 00:13:25,620
‫más tenemos aquí?

204
00:13:27,430 --> 00:13:29,263
‫Podemos deshacernos de éste

205
00:13:30,690 --> 00:13:34,000
‫y, está bien, creo que se ve bien así.

206
00:13:34,000 --> 00:13:37,150
‫Nuevamente, podemos comentar este fragmento de código

207
00:13:37,150 --> 00:13:40,410
‫porque, al menos por ahora, ya no lo necesitamos.

208
00:13:40,410 --> 00:13:44,623
‫Entonces, solo para probarlo nuevamente aquí con los usuarios,

209
00:13:45,640 --> 00:13:47,423
‫reunámoslos a todos,

210
00:13:48,890 --> 00:13:50,973
‫y, de hecho, aquí están.

211
00:13:53,320 --> 00:13:55,960
‫Ahora también podemos decir que

212
00:13:55,960 --> 00:13:58,873
‫solo queremos los que tienen el rol

213
00:14:00,490 --> 00:14:03,760
‫de usuario y, de hecho, eso también funciona.

214
00:14:03,760 --> 00:14:07,500
‫Genial, y eso realmente concluye esta parte de la

215
00:14:07,500 --> 00:14:10,170
‫creación de funciones de fábrica de

216
00:14:10,170 --> 00:14:14,300
‫controladores, y esto realmente fue un gran paso adelante en

217
00:14:14,300 --> 00:14:16,030
‫nuestro proyecto, así

218
00:14:16,030 --> 00:14:18,710
‫que recuerde que, un poco más tarde,

219
00:14:18,710 --> 00:14:22,080
‫también crearemos un recurso de reserva, y entonces

220
00:14:22,080 --> 00:14:25,070
‫verá que probablemente Podrás crear la API principal

221
00:14:25,070 --> 00:14:27,310
‫para estas reservas en cinco

222
00:14:27,310 --> 00:14:32,310
‫segundos o algo así, simplemente usando estas cinco funciones de fábrica, de acuerdo.

223
00:14:32,350 --> 00:14:34,750
‫De todos modos, buen trabajo, gran trabajo, y

224
00:14:34,750 --> 00:14:36,683
‫nos vemos en el próximo.

