﻿1
00:00:01,110 --> 00:00:02,900
‫Maestro: Recuerde cómo en

2
00:00:02,900 --> 00:00:05,510
‫el video sobre nuestro modelo de datos, dijimos

3
00:00:05,510 --> 00:00:07,880
‫que podíamos incrustar o hacer referencia a

4
00:00:07,880 --> 00:00:10,204
‫los datos de la guía turística, así

5
00:00:10,204 --> 00:00:13,340
‫que en este video les mostraré cómo podríamos implementar la

6
00:00:13,340 --> 00:00:16,393
‫incrustación de documentos de guía turística en un documento turístico.

7
00:00:17,930 --> 00:00:20,320
‫Entonces, nuevamente, en esta conferencia vamos a

8
00:00:20,320 --> 00:00:23,700
‫incrustar documentos de usuario en documentos de viaje, y luego,

9
00:00:23,700 --> 00:00:25,840
‫en el siguiente video, les

10
00:00:25,840 --> 00:00:28,030
‫mostraré cómo podemos realmente hacer referencia a

11
00:00:28,030 --> 00:00:30,610
‫los usuarios en lugar de incrustarlos, ¿de acuerdo?

12
00:00:30,610 --> 00:00:33,020
‫Entonces, la idea aquí es que al crear

13
00:00:33,020 --> 00:00:35,730
‫un nuevo documento de viaje, el usuario simplemente agregará

14
00:00:35,730 --> 00:00:38,630
‫una serie de ID de usuario, y luego obtendremos

15
00:00:38,630 --> 00:00:41,020
‫los documentos de usuario correspondientes basados en

16
00:00:41,020 --> 00:00:42,827
‫estos ID y los

17
00:00:42,827 --> 00:00:44,800
‫agregaremos a nuestros documentos de viaje.

18
00:00:44,800 --> 00:00:48,813
‫Entonces, en otras palabras, los incluimos en nuestra gira, ¿de acuerdo?

19
00:00:50,903 --> 00:00:52,323
‫Entonces, hagámoslo aquí ahora.

20
00:00:55,430 --> 00:00:59,220
‫Entonces, las guías serán del tipo arreglo, ¿de acuerdo?

21
00:00:59,220 --> 00:01:01,700
‫Muy simple, y de hecho, antes de

22
00:01:01,700 --> 00:01:04,080
‫implementar cualquier código, permítame mostrarle como

23
00:01:04,080 --> 00:01:06,943
‫ejemplo cómo funcionaría esto al crear un nuevo recorrido.

24
00:01:08,680 --> 00:01:11,360
‫Entonces, volvamos a Postman aquí

25
00:01:11,360 --> 00:01:14,523
‫y creemos un nuevo recorrido, de

26
00:01:16,270 --> 00:01:18,330
‫acuerdo, y aquí

27
00:01:18,330 --> 00:01:23,113
‫en nuestro cuerpo, por supuesto, ahora agregaríamos las guías, las

28
00:01:24,410 --> 00:01:29,400
‫citas y luego especificaremos una serie de ID, ¿de acuerdo?

29
00:01:29,400 --> 00:01:31,113
‫Entonces, obtengamos algunas ID de usuario.

30
00:01:32,610 --> 00:01:36,070
‫Entonces, obtenga todos los usuarios, veamos qué tenemos aquí.

31
00:01:36,070 --> 00:01:38,070
‫Así que tenemos una guía aquí, en

32
00:01:38,070 --> 00:01:39,620
‫realidad, así que obtengamos esta

33
00:01:40,460 --> 00:01:42,060
‫ID junto con las comillas,

34
00:01:46,370 --> 00:01:47,893
‫en realidad, y pongamos

35
00:01:49,410 --> 00:01:51,163
‫eso aquí, y agreguemos algunas otras.

36
00:01:52,900 --> 00:01:57,100
‫Entonces, esto aquí también y en realidad solo estos dos.

37
00:01:57,100 --> 00:02:02,100
‫Eso debería ser suficiente para probar estas cosas, está bien, y así

38
00:02:02,410 --> 00:02:04,100
‫es como vamos a

39
00:02:04,100 --> 00:02:07,490
‫crear un nuevo recorrido con dos guías, está

40
00:02:07,490 --> 00:02:10,440
‫bien, y una vez que guardemos este

41
00:02:10,440 --> 00:02:11,840
‫recorrido, recuperaremos

42
00:02:11,840 --> 00:02:13,472
‫el dos documentos

43
00:02:13,472 --> 00:02:17,270
‫de usuario correspondientes a estos dos ID, ¿de acuerdo?

44
00:02:17,270 --> 00:02:19,263
‫Entonces, implementemos eso, y de

45
00:02:20,440 --> 00:02:21,930
‫vuelta en nuestro

46
00:02:21,930 --> 00:02:23,960
‫modelo, el mejor lugar para

47
00:02:23,960 --> 00:02:26,283
‫hacerlo es un middleware pre-guardado, ¿verdad?

48
00:02:27,280 --> 00:02:29,980
‫Entonces, eso sucederá automáticamente detrás de escena,

49
00:02:29,980 --> 00:02:31,550
‫básicamente, cada vez

50
00:02:31,550 --> 00:02:34,730
‫que se guarde una nueva gira y, de

51
00:02:34,730 --> 00:02:36,780
‫hecho, no quiero hacerlo aquí.

52
00:02:37,620 --> 00:02:39,250
‫Tenemos una consulta, aquí, aquí

53
00:02:39,250 --> 00:02:40,920
‫está el documento "Middleware", así

54
00:02:40,920 --> 00:02:42,203
‫que hagámoslo aquí.

55
00:02:43,320 --> 00:02:45,103
‫Entonces tourSchema. pre,

56
00:02:53,580 --> 00:02:57,370
‫Muy bien, llamemos a continuación de inmediato aquí, para

57
00:02:57,370 --> 00:02:59,600
‫que no lo olvidemos al final.

58
00:02:59,600 --> 00:03:04,600
‫Bien, entendemos esto. guías como entrada, y recuerde que esto

59
00:03:05,220 --> 00:03:07,360
‫será una matriz de todas las

60
00:03:07,360 --> 00:03:10,330
‫ID de usuario, correcto, por lo que las recorreremos

61
00:03:10,330 --> 00:03:13,290
‫usando un archivo. map, y

62
00:03:13,290 --> 00:03:15,480
‫luego, en cada iteración, obtenga

63
00:03:15,480 --> 00:03:18,373
‫el documento de usuario para la ID

64
00:03:19,477 --> 00:03:24,477
‫actual, de acuerdo, y lo almacenaremos dentro de las guías, ¿de acuerdo?

65
00:03:26,460 --> 00:03:29,284
‫Entonces, el elemento actual, que será el ID,

66
00:03:29,284 --> 00:03:30,840
‫bueno, llamémoslo ID

67
00:03:30,840 --> 00:03:32,960
‫para que sea un poco más

68
00:03:32,960 --> 00:03:36,360
‫fácil de entender, y ahora realmente necesitamos al usuario, correcto,

69
00:03:36,360 --> 00:03:38,803
‫así que sigamos adelante e importémoslo.

70
00:03:41,630 --> 00:03:43,143
‫Entonces, const User,

71
00:03:45,490 --> 00:03:46,563
‫require, y

72
00:03:48,000 --> 00:03:53,000
‫en realidad está en la misma carpeta aquí, de acuerdo, entonces

73
00:03:55,759 --> 00:03:57,300
‫User. findByID

74
00:04:01,350 --> 00:04:03,730
‫con el ID actual, ¿de acuerdo?

75
00:04:03,730 --> 00:04:05,550
‫Pero ahora, tenga en

76
00:04:05,550 --> 00:04:09,977
‫cuenta que en realidad necesitamos esperar esta promesa aquí, correcto y,

77
00:04:09,977 --> 00:04:11,870
‫por lo tanto, la función

78
00:04:11,870 --> 00:04:13,513
‫debe marcarse como asíncrona,

79
00:04:15,540 --> 00:04:18,313
‫pero ahora tenemos un problema, está bien,

80
00:04:18,313 --> 00:04:21,340
‫porque el. El método map

81
00:04:21,340 --> 00:04:24,550
‫asignará el resultado de cada iteración al nuevo elemento en

82
00:04:24,550 --> 00:04:27,150
‫la matriz de guías, está bien, y ahora

83
00:04:27,150 --> 00:04:29,100
‫tenemos una función asincrónica aquí

84
00:04:29,100 --> 00:04:31,760
‫y, como saben, que devuelve una promesa, por

85
00:04:31,760 --> 00:04:34,160
‫lo que en este momento esta matriz

86
00:04:34,160 --> 00:04:38,120
‫de guías aquí es básicamente una variedad llena de promesas, de acuerdo.

87
00:04:38,120 --> 00:04:40,530
‫De hecho, llamemos a estas guíasPromesas, por

88
00:04:42,200 --> 00:04:44,160
‫lo que ahora necesitamos

89
00:04:44,160 --> 00:04:47,240
‫ejecutar todas estas promesas, básicamente al mismo tiempo.

90
00:04:47,240 --> 00:04:49,520
‫Como le mostré un poco antes en

91
00:04:49,520 --> 00:04:51,490
‫este código, al menos si

92
00:04:51,490 --> 00:04:53,860
‫no omitió la sección de JavaScript asincrónico, todo

93
00:04:53,860 --> 00:04:58,860
‫lo que tenemos que hacer es esperar Promise. all y luego guidesPromise, está

94
00:05:01,230 --> 00:05:03,450
‫bien, y podemos asignar

95
00:05:04,820 --> 00:05:07,670
‫directamente el resultado de esto

96
00:05:07,670 --> 00:05:11,390
‫a esto. guías, y básicamente anular

97
00:05:11,390 --> 00:05:14,130
‫esa matriz de ID de templo con

98
00:05:14,130 --> 00:05:18,420
‫una matriz de documentos de usuario, de acuerdo, y dado que

99
00:05:18,420 --> 00:05:20,000
‫ahora estamos usando

100
00:05:20,000 --> 00:05:23,860
‫await aquí, necesitamos marcar esta función como asíncrona, ¿de acuerdo?

101
00:05:23,860 --> 00:05:27,900
‫Dale una oportunidad, y creo que eso es todo, ¿de acuerdo?

102
00:05:27,900 --> 00:05:31,460
‫Entonces, nuevamente, necesitamos usar Promise. todo aquí porque

103
00:05:31,460 --> 00:05:35,298
‫el resultado de todo esto aquí es una promesa, de

104
00:05:35,298 --> 00:05:38,410
‫acuerdo, entonces esta matriz aquí va a ser

105
00:05:38,410 --> 00:05:40,483
‫una matriz llena de promesas

106
00:05:40,483 --> 00:05:44,180
‫que luego ejecutamos esperando Promise. ¿todo bien?

107
00:05:44,180 --> 00:05:46,450
‫Entonces, probemos esto ahora,

108
00:05:46,450 --> 00:05:50,018
‫y ya tenemos todo este código aquí listo,

109
00:05:50,018 --> 00:05:52,373
‫deberíamos cambiar este nombre aquí.

110
00:05:55,150 --> 00:05:58,560
‫Entonces, 'Test Tour', pero los ID ya están aquí.

111
00:05:58,560 --> 00:06:01,760
‫Así que enviemos esto, y el nombre de nuestro recorrido debe ser

112
00:06:01,760 --> 00:06:05,167
‫más largo, 'Nuevo recorrido de tareas. 'Está bien,

113
00:06:06,050 --> 00:06:11,050
‫pero ahora echemos un vistazo a nuestros resultados, y

114
00:06:11,240 --> 00:06:15,900
‫de hecho tenemos nuestras guías aquí, ¿de acuerdo?

115
00:06:15,900 --> 00:06:18,580
‫Entonces, estos son los documentos

116
00:06:18,580 --> 00:06:22,170
‫completos y, de hecho, no solo las identificaciones, ¿verdad?

117
00:06:22,170 --> 00:06:24,198
‫Genial, así es como

118
00:06:24,198 --> 00:06:28,440
‫podríamos implementar la incrustación para este ejemplo de guías turísticos.

119
00:06:28,440 --> 00:06:30,840
‫Ahora bien, este código simple que implementamos

120
00:06:30,840 --> 00:06:33,850
‫aquí, por supuesto, solo funciona para crear nuevos documentos,

121
00:06:33,850 --> 00:06:35,820
‫no para actualizarlos, ¿verdad?

122
00:06:35,820 --> 00:06:38,020
‫Así que ahora, tendríamos que

123
00:06:38,020 --> 00:06:42,350
‫seguir adelante e implementar esta misma lógica también para las actualizaciones.

124
00:06:42,350 --> 00:06:44,540
‫Sin embargo, no voy a hacer eso

125
00:06:44,540 --> 00:06:47,530
‫porque, recuerde del video en el que modelamos nuestros datos,

126
00:06:47,530 --> 00:06:49,450
‫que en realidad hay algunos

127
00:06:49,450 --> 00:06:52,090
‫inconvenientes de incrustar estos datos en este caso.

128
00:06:52,090 --> 00:06:54,350
‫Por ejemplo, imagine que un guía

129
00:06:54,350 --> 00:06:56,770
‫turístico actualiza su dirección de correo electrónico o

130
00:06:56,770 --> 00:06:59,250
‫cambia su función de guía a guía principal.

131
00:06:59,250 --> 00:07:02,020
‫Cada vez que ocurriera uno de estos cambios, tendría que

132
00:07:02,020 --> 00:07:04,130
‫verificar si un recorrido tiene a ese

133
00:07:04,130 --> 00:07:06,610
‫usuario como guía y, de ser así, actualizar el

134
00:07:06,610 --> 00:07:08,670
‫recorrido también, y eso es realmente mucho

135
00:07:08,670 --> 00:07:10,650
‫trabajo y no lo estamos. vas

136
00:07:10,650 --> 00:07:11,640
‫a ir

137
00:07:11,640 --> 00:07:13,085
‫en esa dirección, ¿de acuerdo?

138
00:07:13,085 --> 00:07:15,530
‫Ahora, todavía quería mostrarte cómo funciona realmente

139
00:07:15,530 --> 00:07:17,220
‫la incrustación y

140
00:07:17,220 --> 00:07:19,520
‫cómo podríamos implementarla en esta situación

141
00:07:19,520 --> 00:07:22,201
‫porque realmente creo que es muy importante

142
00:07:22,201 --> 00:07:24,551
‫que aún sepas cómo hacer todo

143
00:07:24,551 --> 00:07:26,340
‫en caso de que

144
00:07:26,340 --> 00:07:28,590
‫alguna vez lo necesites en tus

145
00:07:28,590 --> 00:07:30,820
‫propias aplicaciones. pero en esta

146
00:07:30,820 --> 00:07:33,810
‫situación particular, en lugar de incrustar, usaremos referencias,

147
00:07:33,810 --> 00:07:36,085
‫y hablé sobre las razones para

148
00:07:36,085 --> 00:07:38,400
‫hacerlo en ese video, ¿de acuerdo?

149
00:07:38,400 --> 00:07:40,930
‫Por lo tanto, sigamos adelante y hagámoslo

150
00:07:40,930 --> 00:07:42,803
‫bien en la próxima conferencia.

