﻿1
00:00:01,130 --> 00:00:02,940
‫Instructor: Ahora que conoce

2
00:00:02,940 --> 00:00:04,910
‫los conceptos básicos de Mongoose

3
00:00:04,910 --> 00:00:07,240
‫mediante la implementación de las cuatro

4
00:00:07,240 --> 00:00:11,440
‫operaciones correctas, ahora finalmente importa un poco más los datos de nuestro

5
00:00:11,440 --> 00:00:14,423
‫recorrido para que los recorridos sean más completos.

6
00:00:15,990 --> 00:00:20,240
‫Entonces, en este punto, nuestros documentos de viaje solo pueden tener un

7
00:00:20,240 --> 00:00:22,410
‫nombre, una calificación y un precio.

8
00:00:22,410 --> 00:00:25,060
‫Pero, por supuesto, necesitamos muchos más datos

9
00:00:25,060 --> 00:00:29,320
‫aquí, porque el objetivo es tener una API muy rica en

10
00:00:29,320 --> 00:00:30,940
‫datos, como esta.

11
00:00:30,940 --> 00:00:33,390
‫Así que echemos un vistazo a la

12
00:00:33,390 --> 00:00:35,453
‫versión final aquí como referencia.

13
00:00:36,660 --> 00:00:39,010
‫Y ese es este de aquí.

14
00:00:39,010 --> 00:00:41,230
‫Entonces tenemos todas las

15
00:00:41,230 --> 00:00:44,330
‫giras, y se verá un poco así.

16
00:00:44,330 --> 00:00:46,620
‫Bien, entonces ves que en cada

17
00:00:46,620 --> 00:00:49,750
‫recorrido, tenemos una ubicación de inicio, tenemos un promedio de

18
00:00:49,750 --> 00:00:52,543
‫calificaciones, cantidad de calificaciones, imágenes, fechas de inicio.

19
00:00:53,410 --> 00:00:57,400
‫Guías, nombre, duración, tamaño máximo del grupo, dificultad, precio,

20
00:00:57,400 --> 00:00:58,910
‫resumen, descripción,

21
00:00:58,910 --> 00:01:01,323
‫portada de la imagen, ubicaciones.

22
00:01:02,930 --> 00:01:07,930
‫Incluso una babosa, reseñas, duración en semanas y la identificación.

23
00:01:07,960 --> 00:01:10,070
‫Así que ven una gran cantidad de

24
00:01:10,070 --> 00:01:12,860
‫datos, y no vamos a agregar todos los datos

25
00:01:12,860 --> 00:01:14,260
‫en esta conferencia aquí.

26
00:01:14,260 --> 00:01:17,750
‫Hay algunas piezas que todavía no podemos agregar,

27
00:01:17,750 --> 00:01:22,330
‫pero, por supuesto, podemos hacerlo un poco más completo, ¿de acuerdo?

28
00:01:22,330 --> 00:01:27,193
‫Guardemos esto aquí, como referencia, y obtengamos todos los

29
00:01:30,560 --> 00:01:33,550
‫recorridos, y lo pondré fuera

30
00:01:34,630 --> 00:01:36,770
‫de cualquier carpeta.

31
00:01:36,770 --> 00:01:39,643
‫Así que pongámoslo aquí en la parte superior.

32
00:01:40,810 --> 00:01:43,310
‫Y eso no funciona por alguna razón.

33
00:01:43,310 --> 00:01:45,060
‫Bien, pongámoslo aquí, entonces.

34
00:01:47,680 --> 00:01:50,903
‫Está bien, vamos, eso es

35
00:01:52,390 --> 00:01:53,550
‫correcto.

36
00:01:53,550 --> 00:01:55,570
‫Y nuevamente, lo dejo aquí,

37
00:01:55,570 --> 00:01:58,400
‫para seguir comparando lo que tenemos con

38
00:01:58,400 --> 00:02:00,330
‫lo que apuntamos.

39
00:02:00,330 --> 00:02:02,870
‫De todos modos, regresemos y comencemos con

40
00:02:02,870 --> 00:02:05,250
‫lo que ya tenemos, y tenemos

41
00:02:05,250 --> 00:02:06,560
‫el nombre.

42
00:02:06,560 --> 00:02:08,520
‫Y eso ya es suficientemente

43
00:02:08,520 --> 00:02:11,000
‫bueno, así que por ahora lo dejaré así.

44
00:02:11,000 --> 00:02:16,000
‫Entonces el nombre, luego también queremos una duración.

45
00:02:19,780 --> 00:02:24,780
‫Y esa duración es un número, y se requiere.

46
00:02:26,570 --> 00:02:29,990
‫Así que configúrelo en verdadero, y luego

47
00:02:29,990 --> 00:02:33,603
‫el mensaje es, un recorrido debe tener una duración.

48
00:02:35,100 --> 00:02:38,450
‫Entonces, estos validadores requeridos aquí básicamente son los

49
00:02:38,450 --> 00:02:40,870
‫únicos validadores que agregaré a

50
00:02:40,870 --> 00:02:43,920
‫cada uno de estos campos aquí por ahora.

51
00:02:43,920 --> 00:02:46,120
‫Más adelante, cuando hablemos más

52
00:02:46,120 --> 00:02:48,790
‫en detalle sobre validadores, agregaremos mucho más.

53
00:02:48,790 --> 00:02:50,700
‫Pero nuevamente, por ahora, solo

54
00:02:50,700 --> 00:02:54,150
‫quiero que algunos de estos campos, no todos, sean obligatorios.

55
00:02:54,150 --> 00:02:56,110
‫A continuación, tenemos el tamaño del grupo.

56
00:02:56,110 --> 00:02:58,640
‫Entonces, básicamente, cuántas personas pueden participar

57
00:02:58,640 --> 00:03:01,030
‫como máximo en una gira.

58
00:03:01,030 --> 00:03:03,560
‫Y por eso lo llamo maxGroupSize.

59
00:03:06,530 --> 00:03:09,793
‫Y entonces, nuevamente debería

60
00:03:12,330 --> 00:03:17,070
‫ser un número, y nuevamente se requiere.

61
00:03:17,070 --> 00:03:22,070
‫El tour debe tener un tamaño de grupo.

62
00:03:24,150 --> 00:03:25,900
‫No olvide la coma aquí.

63
00:03:25,900 --> 00:03:28,653
‫A continuación, también necesitamos una dificultad.

64
00:03:36,010 --> 00:03:39,470
‫Y este es una cadena, y más adelante,

65
00:03:39,470 --> 00:03:42,080
‫definiremos que debería ser medio,

66
00:03:42,080 --> 00:03:44,920
‫fácil o difícil, pero nuevamente, eso

67
00:03:44,920 --> 00:03:47,040
‫es en realidad un

68
00:03:47,040 --> 00:03:50,130
‫validador, y lo dejaré para más adelante.

69
00:03:50,130 --> 00:03:52,440
‫De acuerdo, por ahora, solo digo

70
00:03:52,440 --> 00:03:54,423
‫que debería tener una dificultad.

71
00:03:58,640 --> 00:04:02,100
‫A continuación, hablemos de las calificaciones.

72
00:04:02,100 --> 00:04:05,010
‫Así que ahora mismo tenemos un campo llamado Calificación, pero

73
00:04:05,010 --> 00:04:07,080
‫de hecho queremos tener un campo para

74
00:04:07,080 --> 00:04:08,610
‫el promedio de calificación

75
00:04:08,610 --> 00:04:10,930
‫y un campo para la cantidad de calificaciones.

76
00:04:10,930 --> 00:04:13,620
‫Básicamente, la cantidad de calificaciones que hay.

77
00:04:13,620 --> 00:04:17,430
‫Entonces, más adelante, habrá otro recurso llamado reseñas,

78
00:04:17,430 --> 00:04:20,080
‫donde los usuarios podrán escribir reseñas

79
00:04:20,080 --> 00:04:22,330
‫sobre recorridos y calificar.

80
00:04:22,330 --> 00:04:25,030
‫Y ese será un recurso completamente diferente

81
00:04:25,030 --> 00:04:27,060
‫y un modelo completamente diferente.

82
00:04:27,060 --> 00:04:29,770
‫Pero aún así, queremos tener básicamente un

83
00:04:29,770 --> 00:04:33,660
‫resumen de estas calificaciones y de estas reseñas aquí en los recorridos.

84
00:04:33,660 --> 00:04:36,630
‫Muy bien, y las razones de eso las aprenderá

85
00:04:36,630 --> 00:04:41,240
‫un poco más tarde una vez que comencemos cómo y por qué modelamos datos en

86
00:04:41,240 --> 00:04:43,900
‫bases de datos NoSQL, y específicamente en MongoDB.

87
00:04:43,900 --> 00:04:47,913
‫Bien, por ahora, agreguemos el promedio de calificaciones y la

88
00:04:49,150 --> 00:04:50,920
‫cantidad de calificaciones.

89
00:04:50,920 --> 00:04:53,220
‫Bien, dejamos esto aquí como número,

90
00:04:53,220 --> 00:04:54,643
‫y con este

91
00:04:55,500 --> 00:04:58,590
‫valor predeterminado, y la cantidad de calificaciones, ratingsQuantity.

92
00:05:00,930 --> 00:05:03,803
‫Por supuesto, también debería ser un número,

93
00:05:06,490 --> 00:05:09,160
‫y el valor predeterminado será cero.

94
00:05:09,160 --> 00:05:11,060
‫Porque, por supuesto, al principio,

95
00:05:11,060 --> 00:05:14,183
‫no habrá absolutamente ninguna revisión, cuando la gira sea nueva.

96
00:05:15,590 --> 00:05:18,680
‫Ahora bien, no le di a estas dos

97
00:05:18,680 --> 00:05:21,580
‫propiedades aquí un valor requerido, porque no es

98
00:05:21,580 --> 00:05:22,960
‫el usuario que

99
00:05:22,960 --> 00:05:26,100
‫crea estos recorridos quien realmente especificará estos valores, ¿verdad?

100
00:05:26,100 --> 00:05:27,720
‫Entonces, cuando creamos

101
00:05:27,720 --> 00:05:30,310
‫un nuevo recorrido, nunca especificaremos las calificaciones

102
00:05:30,310 --> 00:05:32,260
‫Promedio, ni las calificaciones Cantidad,

103
00:05:32,260 --> 00:05:34,720
‫porque eso se calculará más adelante

104
00:05:34,720 --> 00:05:37,570
‫a partir de las críticas reales, ¿de acuerdo?

105
00:05:37,570 --> 00:05:40,040
‫A continuación, tenemos el precio aquí,

106
00:05:40,040 --> 00:05:41,920
‫así que está bien

107
00:05:41,920 --> 00:05:44,403
‫así, y también podríamos tener un descuento.

108
00:05:45,390 --> 00:05:47,110
‫Entonces, digamos que esta

109
00:05:47,110 --> 00:05:51,260
‫empresa, Natours, quiere dar un descuento a uno de los tours en

110
00:05:51,260 --> 00:05:53,250
‫algún momento, por lo que también

111
00:05:53,250 --> 00:05:55,463
‫pueden especificar un precio de descuento aquí.

112
00:05:57,090 --> 00:06:00,850
‫Así que priceDiscount, así que pongámoslo aquí en el número.

113
00:06:00,850 --> 00:06:03,220
‫No necesitamos ninguna opción de tipo de esquema aquí.

114
00:06:03,220 --> 00:06:04,970
‫Por ejemplo, no es

115
00:06:04,970 --> 00:06:07,270
‫obligatorio, así que por ahora, dejémoslo así.

116
00:06:08,170 --> 00:06:12,313
‫A continuación, podemos especificar un resumen del recorrido.

117
00:06:14,120 --> 00:06:17,283
‫Entonces el resumen es de tipo String.

118
00:06:19,250 --> 00:06:22,040
‫Pero en realidad no lo haré obligatorio.

119
00:06:22,040 --> 00:06:24,540
‫Bien, y eso es simplemente porque no

120
00:06:24,540 --> 00:06:27,070
‫está en la página principal de nuestro sitio web.

121
00:06:27,070 --> 00:06:29,940
‫Bien, básicamente no está en la descripción general.

122
00:06:29,940 --> 00:06:31,800
‫Y les mostraré eso en un segundo,

123
00:06:31,800 --> 00:06:33,070
‫pero por ahora permítanme

124
00:06:33,070 --> 00:06:36,330
‫agregar aquí otra opción de tipo de esquema que aún no les

125
00:06:36,330 --> 00:06:37,910
‫mostré, que se llama recortar.

126
00:06:37,910 --> 00:06:40,513
‫Y recortar solo funciona para cuerdas.

127
00:06:41,820 --> 00:06:43,650
‫Y lo pondré en verdad.

128
00:06:43,650 --> 00:06:46,710
‫Entonces, recuerde cómo dije que hay diferentes tipos de esquemas

129
00:06:46,710 --> 00:06:49,030
‫para diferentes tipos aquí, y por lo

130
00:06:49,030 --> 00:06:52,320
‫tanto, para la cadena, tenemos un tipo de esquema que es

131
00:06:52,320 --> 00:06:54,430
‫recorte que eliminará todo el espacio

132
00:06:54,430 --> 00:06:57,310
‫en blanco al principio y al final de la cadena.

133
00:06:57,310 --> 00:07:00,363
‫Está bien, y si alguien

134
00:07:01,570 --> 00:07:06,360
‫entra, por ejemplo, esta gira, bla, bla, bla, no importa.

135
00:07:06,360 --> 00:07:08,720
‫Entonces, si alguien ingresa esto, entonces todo

136
00:07:08,720 --> 00:07:10,940
‫este espacio en blanco al

137
00:07:10,940 --> 00:07:13,473
‫final y al principio aquí se cortará.

138
00:07:15,190 --> 00:07:17,870
‫Y de hecho, podemos poner lo mismo en el nombre,

139
00:07:17,870 --> 00:07:19,003
‫por ejemplo, aquí.

140
00:07:20,810 --> 00:07:22,223
‫De acuerdo, ¿por qué no?

141
00:07:23,350 --> 00:07:24,720
‫Así que dejémoslo así.

142
00:07:24,720 --> 00:07:27,430
‫Aquí veo que en realidad se llama duración,

143
00:07:27,430 --> 00:07:28,403
‫no duraciones.

144
00:07:30,450 --> 00:07:35,240
‫Muy bien, ese es el resumen, que también está mal escrito.

145
00:07:35,240 --> 00:07:37,110
‫Tan resumen como este.

146
00:07:37,110 --> 00:07:38,977
‫Ah, y sí, ahora quería mostrarte el

147
00:07:38,977 --> 00:07:40,633
‫sitio web de Natours, de hecho.

148
00:07:42,090 --> 00:07:44,593
‫Así que volvamos a nuestra documentación de Mongoose.

149
00:07:46,890 --> 00:07:48,890
‫Pero esto es lo que quiero mostrarte.

150
00:07:48,890 --> 00:07:53,540
‫Así que Natours. dev, que es el original de esta aplicación,

151
00:07:53,540 --> 00:07:56,740
‫por lo que estos son los datos que tenemos en nuestra API y

152
00:07:56,740 --> 00:07:59,380
‫que, por supuesto, también necesitamos en la base de datos.

153
00:07:59,380 --> 00:08:00,770
‫Entonces tenemos todos estos datos.

154
00:08:00,770 --> 00:08:05,260
‫Entonces, el nombre de este tour, tenemos la dificultad, tenemos la duración, tenemos,

155
00:08:05,260 --> 00:08:07,800
‫esto es un resumen, luego tenemos una

156
00:08:07,800 --> 00:08:10,930
‫ubicación de inicio, tenemos la cantidad de ubicaciones, tenemos

157
00:08:10,930 --> 00:08:13,050
‫una fecha de inicio, tenemos

158
00:08:13,050 --> 00:08:14,800
‫el tamaño máximo de

159
00:08:14,800 --> 00:08:17,602
‫grupo en aquí, y tenemos que fijar el

160
00:08:17,602 --> 00:08:19,810
‫precio, el promedio de calificación, la

161
00:08:19,810 --> 00:08:21,193
‫cantidad de calificación.

162
00:08:22,050 --> 00:08:23,683
‫También tenemos una imagen aquí.

163
00:08:24,600 --> 00:08:27,833
‫Y luego aquí en la página de detalles es donde

164
00:08:30,045 --> 00:08:32,120
‫tenemos, tenemos el resumen aquí abajo.

165
00:08:32,120 --> 00:08:36,330
‫Tenemos las guías que les acabo de mostrar en Postman antes.

166
00:08:36,330 --> 00:08:38,080
‫Tenemos algunas imágenes más.

167
00:08:38,080 --> 00:08:40,970
‫Tenemos aquí todas las ubicaciones y tenemos

168
00:08:40,970 --> 00:08:42,673
‫todas las reseñas.

169
00:08:44,220 --> 00:08:47,570
‫De acuerdo, como les decía, no todos los

170
00:08:47,570 --> 00:08:51,340
‫datos están en la página Descripción general, por lo que

171
00:08:51,340 --> 00:08:54,500
‫no todos los datos también son obligatorios.

172
00:08:54,500 --> 00:08:57,623
‫Bien, volvamos aquí.

173
00:08:58,490 --> 00:09:01,333
‫A continuación, quiero agregar una descripción.

174
00:09:06,510 --> 00:09:10,283
‫Y este es un tipo de String, y

175
00:09:11,850 --> 00:09:14,740
‫establezcamos trim en verdadero nuevamente.

176
00:09:14,740 --> 00:09:16,520
‫Y acabo de recordar que

177
00:09:16,520 --> 00:09:19,250
‫el resumen está en realidad en la página Descripción general.

178
00:09:19,250 --> 00:09:22,280
‫Y entonces hagamos este requerido.

179
00:09:22,280 --> 00:09:24,223
‫Entonces agrega aquí al

180
00:09:27,010 --> 00:09:27,843
‫final,

181
00:09:30,220 --> 00:09:34,010
‫cierto, un recorrido debe tener una descripción.

182
00:09:34,010 --> 00:09:39,010
‫Bien, a continuación, especificaremos imageCover.

183
00:09:42,344 --> 00:09:45,320
‫Y esas son las imágenes que ve en la página de

184
00:09:45,320 --> 00:09:48,463
‫descripción general, así que configuremos esta para que realmente requiera este rol.

185
00:09:50,060 --> 00:09:52,880
‫Entonces, el tipo debería ser cadena, porque

186
00:09:52,880 --> 00:09:55,670
‫básicamente este será simplemente el nombre de

187
00:09:55,670 --> 00:09:57,860
‫la imagen aquí, que

188
00:09:57,860 --> 00:10:01,050
‫luego podremos leer desde el sistema de archivos.

189
00:10:01,050 --> 00:10:03,850
‫Bien, en realidad solo el nombre de la imagen.

190
00:10:03,850 --> 00:10:07,040
‫Entonces, básicamente, se almacenará una referencia en la base de datos.

191
00:10:07,040 --> 00:10:09,530
‫Y esa es una práctica muy común, ¿de acuerdo?

192
00:10:09,530 --> 00:10:13,270
‫Así que también podríamos almacenar la imagen completa en una base de datos, pero por

193
00:10:13,270 --> 00:10:15,400
‫lo general no es una buena idea.

194
00:10:15,400 --> 00:10:18,860
‫Simplemente dejamos las imágenes en algún lugar del sistema de archivos y luego

195
00:10:18,860 --> 00:10:21,340
‫colocamos el nombre de la imagen en la base

196
00:10:21,340 --> 00:10:22,823
‫de datos como un campo.

197
00:10:24,370 --> 00:10:27,493
‫Por lo tanto, configúrelo como obligatorio,

198
00:10:28,560 --> 00:10:32,990
‫es cierto, un recorrido debe tener una imagen de portada.

199
00:10:32,990 --> 00:10:36,550
‫Bien, la siguiente es el resto de imágenes.

200
00:10:36,550 --> 00:10:39,810
‫Y ahora aquí tenemos algo nuevo, ¿de acuerdo?

201
00:10:39,810 --> 00:10:41,740
‫Porque tenemos varias imágenes

202
00:10:41,740 --> 00:10:44,750
‫y quiero guardar esas imágenes como una matriz.

203
00:10:44,750 --> 00:10:47,010
‫Y de hecho, como una matriz de cadenas.

204
00:10:47,010 --> 00:10:50,110
‫Entonces, la forma de hacerlo es

205
00:10:50,110 --> 00:10:54,260
‫simplificar, especificar aquí una matriz de cadenas, como esta.

206
00:10:54,260 --> 00:10:57,330
‫Así que quiero que siga siendo de tipo cadena, pero

207
00:10:57,330 --> 00:10:59,230
‫quiero que sea una matriz.

208
00:10:59,230 --> 00:11:02,580
‫Entonces, una matriz en la que tenemos varias cadenas.

209
00:11:02,580 --> 00:11:06,441
‫Y así es como puedo definir esto, ¿de acuerdo?

210
00:11:06,441 --> 00:11:09,100
‫Y usaremos esto más tarde para otra cosa.

211
00:11:09,100 --> 00:11:11,750
‫Entonces, en realidad pasaremos más

212
00:11:11,750 --> 00:11:14,680
‫opciones de tipo de esquema que solo

213
00:11:14,680 --> 00:11:18,660
‫un tipo, y para entonces lo usaremos nuevamente, ¿de acuerdo?

214
00:11:18,660 --> 00:11:21,170
‫Por ahora, sin embargo, sigamos adelante,

215
00:11:21,170 --> 00:11:23,970
‫y el siguiente campo que quería

216
00:11:23,970 --> 00:11:26,207
‫agregar aquí es createdAt.

217
00:11:26,207 --> 00:11:29,230
‫Y el campo createdAt debería ser básicamente una marca de

218
00:11:29,230 --> 00:11:33,290
‫tiempo que se establece en el momento en que el usuario obtiene un nuevo recorrido.

219
00:11:33,290 --> 00:11:36,433
‫Por lo tanto, esto aquí debería agregarse automáticamente.

220
00:11:37,660 --> 00:11:40,580
‫Nuevamente, en el momento en que se crea el recorrido.

221
00:11:40,580 --> 00:11:42,580
‫¿Entonces cómo hacemos eso?

222
00:11:42,580 --> 00:11:46,560
‫Bueno, en primer lugar, configuramos el tipo en Fecha.

223
00:11:46,560 --> 00:11:50,840
‫Entonces, Data es otro tipo de datos integrado en JavaScript, y

224
00:11:50,840 --> 00:11:52,253
‫podemos usarlo aquí.

225
00:11:53,510 --> 00:11:56,210
‫Bien, entonces el tipo es Fecha, y luego

226
00:11:56,210 --> 00:11:59,010
‫simplemente necesitamos establecer un valor predeterminado, y el

227
00:11:59,010 --> 00:12:00,840
‫valor predeterminado es la

228
00:12:00,840 --> 00:12:04,870
‫función incorporada de JavaScript Fecha. ahora.

229
00:12:04,870 --> 00:12:07,570
‫Y estoy seguro de que está familiarizado con este.

230
00:12:07,570 --> 00:12:11,390
‫Entonces, esto simplemente nos dará una marca de tiempo

231
00:12:11,390 --> 00:12:15,140
‫en milisegundos, que básicamente representa el milisegundo actual.

232
00:12:15,140 --> 00:12:16,740
‫Muy bien, ahora

233
00:12:16,740 --> 00:12:20,390
‫en Mongo, esto ahora se convierte inmediatamente a la fecha

234
00:12:20,390 --> 00:12:24,153
‫de hoy para darle más sentido a estos datos, ¿de acuerdo?

235
00:12:25,650 --> 00:12:30,650
‫Así que sí, esa es la marca de tiempo creada automáticamente.

236
00:12:30,900 --> 00:12:35,900
‫Y ahora, finalmente, también necesitamos pasar una serie de fechas.

237
00:12:36,400 --> 00:12:38,650
‫Y ahora, finalmente, para terminar

238
00:12:38,650 --> 00:12:43,033
‫por ahora, también queremos poder definir una matriz de fechas de inicio.

239
00:12:44,836 --> 00:12:49,500
‫Entonces, startDates, y nuevamente, simplemente definimos una matriz, y luego

240
00:12:49,500 --> 00:12:52,470
‫decimos que allí queremos fechas.

241
00:12:52,470 --> 00:12:56,240
‫Muy bien, estas fechas de inicio son básicamente fechas diferentes en

242
00:12:56,240 --> 00:12:58,400
‫las que comienza una gira.

243
00:12:58,400 --> 00:13:00,540
‫Por ejemplo, podemos tener una gira

244
00:13:00,540 --> 00:13:02,280
‫que comience en diciembre

245
00:13:02,280 --> 00:13:04,660
‫de este año, y luego en febrero,

246
00:13:04,660 --> 00:13:06,580
‫el próximo año, y luego otra

247
00:13:06,580 --> 00:13:09,160
‫en el verano, por lo que diferentes fechas

248
00:13:09,160 --> 00:13:11,030
‫para la misma gira son

249
00:13:11,030 --> 00:13:14,550
‫simplemente diferentes, digamos, instancias de la gira. comenzando en diferentes fechas.

250
00:13:14,550 --> 00:13:16,610
‫Muy bien, espero que tenga sentido.

251
00:13:16,610 --> 00:13:19,730
‫De todos modos, este aquí no será

252
00:13:19,730 --> 00:13:23,360
‫creado automáticamente por MongoDB, y MongoDB automáticamente intentará

253
00:13:23,360 --> 00:13:27,000
‫analizar la cadena que pasamos como fecha en una

254
00:13:27,000 --> 00:13:28,930
‫fecha real de JavaScript.

255
00:13:28,930 --> 00:13:31,790
‫Por ejemplo, podríamos pasar algo

256
00:13:31,790 --> 00:13:36,580
‫como, digamos, 2021, 21 de marzo, y nuevamente

257
00:13:36,580 --> 00:13:39,150
‫Mongo lo analizaría automáticamente

258
00:13:39,150 --> 00:13:41,199
‫como una fecha.

259
00:13:41,199 --> 00:13:42,820
‫También puede especificar la fecha.

260
00:13:42,820 --> 00:13:47,820
‫Por ejemplo, decir 11 y 32 minutos, está bien.

261
00:13:48,210 --> 00:13:51,800
‫O también podríamos simplemente ingresar una marca de tiempo de Unix, por lo

262
00:13:51,800 --> 00:13:54,610
‫que una marca de tiempo como en este formato aquí.

263
00:13:54,610 --> 00:13:56,970
‫Bien, y todos estos

264
00:13:56,970 --> 00:14:01,200
‫formatos, básicamente, Mongo intentará analizarlos en una fecha.

265
00:14:01,200 --> 00:14:03,853
‫Y solo si no puede, arrojará un error.

266
00:14:04,762 --> 00:14:06,980
‫(exhala) Así que esto fue mucho trabajo.

267
00:14:06,980 --> 00:14:08,730
‫Vamos a salvarlo aquí.

268
00:14:08,730 --> 00:14:11,530
‫Y la forma en que podemos probar esto es ir

269
00:14:11,530 --> 00:14:13,850
‫aquí a nuestros datos de desarrollo, donde tenemos

270
00:14:13,850 --> 00:14:16,380
‫este recorrido simple. json, que es

271
00:14:16,380 --> 00:14:19,343
‫el que hemos estado usando en una sección anterior.

272
00:14:20,370 --> 00:14:21,790
‫Está bien.

273
00:14:21,790 --> 00:14:23,190
‫Entonces, todo lo

274
00:14:23,190 --> 00:14:26,023
‫que voy a hacer aquí es simplemente tomar

275
00:14:28,070 --> 00:14:33,070
‫todos estos datos aquí y luego usarlos para crear una nueva solicitud, ¿de acuerdo?

276
00:14:34,920 --> 00:14:38,170
‫Así que queremos crear una nueva solicitud POST aquí, y con

277
00:14:38,170 --> 00:14:39,500
‫todos esos datos,

278
00:14:39,500 --> 00:14:41,650
‫en lugar de tener que escribirla manualmente.

279
00:14:42,660 --> 00:14:44,920
‫Bien, pegando todo esto aquí.

280
00:14:46,320 --> 00:14:49,580
‫Y ahora, de hecho, no necesitamos la identificación.

281
00:14:49,580 --> 00:14:50,750
‫Así que lo

282
00:14:50,750 --> 00:14:53,620
‫necesitábamos antes, cuando estábamos haciendo nuestra API basada

283
00:14:53,620 --> 00:14:57,200
‫en archivos, pero eso ya se acabó, así que eliminémoslo.

284
00:14:57,200 --> 00:14:58,690
‫Entonces, todo el

285
00:14:58,690 --> 00:15:02,250
‫resto de los datos que marcamos que son obligatorios ahora están

286
00:15:02,250 --> 00:15:03,910
‫aquí, e incluso algunos más.

287
00:15:03,910 --> 00:15:07,593
‫Intentemos ver qué sucede cuando enviamos esto.

288
00:15:08,500 --> 00:15:10,823
‫Y ahora recibimos datos no válidos enviados.

289
00:15:11,900 --> 00:15:16,450
‫Así que vayamos a nuestro controlador de recorrido, y aquí, donde

290
00:15:16,450 --> 00:15:19,630
‫creamos un recorrido, en lugar de este mensaje,

291
00:15:19,630 --> 00:15:22,610
‫retrocedamos como lo teníamos antes y enviemos

292
00:15:22,610 --> 00:15:25,840
‫el error completo para que veamos qué es

293
00:15:26,780 --> 00:15:29,633
‫lo que realmente está yendo mal.

294
00:15:30,800 --> 00:15:34,580
‫Así que mándalo aquí, vale, y el problema es que

295
00:15:34,580 --> 00:15:37,483
‫ya tenemos definida The Snow Adventure.

296
00:15:38,550 --> 00:15:41,060
‫Así que primero eliminémonos de eso.

297
00:15:41,060 --> 00:15:43,240
‫Sí, aquí tenemos The

298
00:15:43,240 --> 00:15:45,650
‫Snow Adventure, así que deberíamos eliminar

299
00:15:45,650 --> 00:15:49,130
‫esto, y para eso, estoy usando nuestra propia API,

300
00:15:49,130 --> 00:15:51,713
‫por lo que ya podemos usarla aquí.

301
00:15:53,100 --> 00:15:54,860
‫Así que ahora debería haber

302
00:15:54,860 --> 00:15:58,690
‫desaparecido, y ahora deberíamos poder agregar esto como una nueva gira.

303
00:15:58,690 --> 00:16:01,590
‫Y de hecho, ahora está aquí.

304
00:16:01,590 --> 00:16:05,040
‫Así que aquí están todos los datos que

305
00:16:05,040 --> 00:16:08,160
‫acabamos de especificar en este bonito formato.

306
00:16:08,160 --> 00:16:10,580
‫Entonces, lo que es interesante ahora es ver

307
00:16:10,580 --> 00:16:12,650
‫realmente la marca de tiempo createdAt.

308
00:16:12,650 --> 00:16:16,770
‫Ese es el momento exacto en el que estoy grabando este video.

309
00:16:16,770 --> 00:16:19,480
‫Y este, por supuesto, fue creado

310
00:16:19,480 --> 00:16:23,880
‫automáticamente por este fragmento de código que tenemos en algún lugar aquí.

311
00:16:23,880 --> 00:16:24,853
‫Sí, esto.

312
00:16:25,970 --> 00:16:30,000
‫Entonces esa fecha viene de esta Fecha. ahora marca de

313
00:16:30,000 --> 00:16:32,970
‫tiempo que JavaScript luego analiza automáticamente

314
00:16:32,970 --> 00:16:36,120
‫a esta fecha agradable y legible.

315
00:16:36,120 --> 00:16:39,290
‫Entonces aquí tenemos estas matrices.

316
00:16:39,290 --> 00:16:41,407
‫Bien, entonces esta matriz y

317
00:16:41,407 --> 00:16:45,403
‫otra matriz, y por supuesto, la ID generada automáticamente, ¿de acuerdo?

318
00:16:46,740 --> 00:16:48,560
‫Entonces, si venimos aquí

319
00:16:48,560 --> 00:16:50,940
‫ahora, tendremos, por supuesto, tres recorridos.

320
00:16:50,940 --> 00:16:54,340
‫Primero, los otros que no son tan completos,

321
00:16:54,340 --> 00:16:56,510
‫y luego todos estos.

322
00:16:56,510 --> 00:16:59,450
‫Ahora, lo que es interesante ver aquí

323
00:16:59,450 --> 00:17:04,050
‫es que Mongo también actualizó el tipo de recorridos que ya teníamos.

324
00:17:04,050 --> 00:17:06,290
‫Entonces, por ejemplo, teníamos calificación aquí,

325
00:17:06,290 --> 00:17:08,750
‫pero ahora que nuestro esquema cambió por

326
00:17:08,750 --> 00:17:11,310
‫completo, luego agregó este promedio de calificaciones, y

327
00:17:11,310 --> 00:17:15,600
‫también esta cantidad de calificaciones, tanto a sus valores predeterminados como a

328
00:17:15,600 --> 00:17:17,023
‫lo mismo aquí.

329
00:17:17,990 --> 00:17:20,410
‫También creó esta marca de tiempo.

330
00:17:20,410 --> 00:17:25,210
‫Creó, sí, creó imágenes y fechas de inicio, con

331
00:17:25,210 --> 00:17:27,080
‫estas matrices vacías.

332
00:17:27,080 --> 00:17:29,373
‫Y así cambió todos estos datos aquí.

333
00:17:30,240 --> 00:17:32,830
‫Muy bien, y antes de comenzar a avanzar en

334
00:17:32,830 --> 00:17:34,460
‫un proyecto, probablemente deberíamos

335
00:17:34,460 --> 00:17:36,863
‫seguir adelante y eliminar todos estos datos aquí.

336
00:17:38,380 --> 00:17:40,800
‫Y, de hecho, lo que vamos a hacer

337
00:17:40,800 --> 00:17:43,660
‫en el siguiente video, ahora que nuestro modelo finalmente

338
00:17:43,660 --> 00:17:45,250
‫está completo, al menos

339
00:17:45,250 --> 00:17:47,410
‫para esta sección, seguiremos adelante y

340
00:17:47,410 --> 00:17:50,060
‫escribiremos un pequeño script que importará automáticamente todos los

341
00:17:50,060 --> 00:17:51,713
‫recorridos de estos datos JSON.

342
00:17:52,550 --> 00:17:55,090
‫Bien, de este archivo JSON, en realidad.

343
00:17:55,090 --> 00:17:57,170
‫Así que básicamente leerá el archivo,

344
00:17:57,170 --> 00:18:00,800
‫obtendrá todos los recorridos y los importará a la base de datos.

345
00:18:00,800 --> 00:18:03,830
‫Muy bien, eso es lo que haremos a continuación,

346
00:18:03,830 --> 00:18:06,160
‫porque será muy útil en esta sección

347
00:18:06,160 --> 00:18:08,163
‫y también en el futuro.

