﻿1
00:00:01,210 --> 00:00:02,660
‫Instructor: Hasta ahora,

2
00:00:02,660 --> 00:00:04,860
‫en esta sección, hemos hablado

3
00:00:04,860 --> 00:00:06,940
‫sobre los modelos de Mongoose,

4
00:00:06,940 --> 00:00:09,660
‫las operaciones CRUD con Mongoose, hicimos muchas

5
00:00:09,660 --> 00:00:12,820
‫consultas y aprendimos sobre la canalización de agregación,

6
00:00:12,820 --> 00:00:15,110
‫pero ahora para los próximos videos,

7
00:00:15,110 --> 00:00:18,860
‫regresemos a nuestros datos. modelar y aprender algunas características súper

8
00:00:18,860 --> 00:00:22,170
‫útiles que nos ofrece Mongoose para modelar nuestros datos.

9
00:00:22,170 --> 00:00:24,090
‫Y la primera de la que vamos

10
00:00:24,090 --> 00:00:25,773
‫a hablar son las propiedades virtuales.

11
00:00:27,410 --> 00:00:29,973
‫Y entonces abramos nuestro modelo de gira aquí.

12
00:00:31,050 --> 00:00:35,080
‫Muy bien, ahora las propiedades virtuales son básicamente campos que

13
00:00:35,080 --> 00:00:37,030
‫podemos definir en nuestro

14
00:00:37,030 --> 00:00:39,150
‫esquema pero que no se conservarán.

15
00:00:39,150 --> 00:00:42,100
‫Por lo tanto, no se guardarán en la base de

16
00:00:42,100 --> 00:00:44,720
‫datos para ahorrarnos algo de espacio allí.

17
00:00:44,720 --> 00:00:46,140
‫Y la mayoría de

18
00:00:46,140 --> 00:00:49,260
‫las veces, por supuesto, queremos realmente guardar nuestros datos en la

19
00:00:49,260 --> 00:00:51,700
‫base de datos, pero las propiedades virtuales tienen

20
00:00:51,700 --> 00:00:55,090
‫mucho sentido para los campos que se pueden derivar unos de otros.

21
00:00:55,090 --> 00:00:58,410
‫Por ejemplo, una conversión de millas a kilómetros, no

22
00:00:58,410 --> 00:01:00,720
‫tiene sentido almacenar estos dos

23
00:01:00,720 --> 00:01:03,260
‫campos en una base de datos si

24
00:01:03,260 --> 00:01:05,750
‫podemos convertir fácilmente uno a otro, ¿verdad?

25
00:01:05,750 --> 00:01:09,140
‫Bien, ahora definamos una propiedad virtual que contenga la

26
00:01:09,140 --> 00:01:11,680
‫duración del recorrido en semanas.

27
00:01:11,680 --> 00:01:13,800
‫Y ese es un campo

28
00:01:13,800 --> 00:01:16,460
‫básicamente que podemos convertir muy fácilmente de la

29
00:01:16,460 --> 00:01:18,970
‫duración que ya tenemos en días, ¿verdad?

30
00:01:18,970 --> 00:01:20,523
‫Y así es como funciona.

31
00:01:22,160 --> 00:01:25,640
‫Definimos esas propiedades virtuales en el esquema del recorrido,

32
00:01:25,640 --> 00:01:30,640
‫y por eso decimos, tourSchema. virtual y luego el nombre de

33
00:01:33,430 --> 00:01:34,763
‫la propiedad virtual.

34
00:01:36,530 --> 00:01:39,300
‫Así que llamémoslo semanas de

35
00:01:39,300 --> 00:01:42,950
‫duración, y luego necesitamos definir el método get.

36
00:01:42,950 --> 00:01:45,600
‫Y eso es solo porque esta propiedad virtual

37
00:01:45,600 --> 00:01:47,580
‫aquí básicamente se creará cada

38
00:01:47,580 --> 00:01:50,560
‫vez que obtengamos algunos datos de la base de datos.

39
00:01:50,560 --> 00:01:54,273
‫Y entonces esta función get aquí se llama getter.

40
00:01:54,273 --> 00:01:57,090
‫Ahora aquí pasamos una función, y en

41
00:01:57,090 --> 00:01:58,400
‫realidad esta función

42
00:01:58,400 --> 00:02:02,460
‫de devolución de llamada será una función real, no una función de

43
00:02:02,460 --> 00:02:05,672
‫flecha, y les explicaré por qué en un segundo.

44
00:02:05,672 --> 00:02:08,500
‫Ahora, ¿cómo definimos básicamente

45
00:02:08,500 --> 00:02:10,810
‫la propiedad virtual?

46
00:02:10,810 --> 00:02:13,420
‫Bueno, es muy simple, todo lo que tenemos

47
00:02:13,420 --> 00:02:18,280
‫que decir es que queremos devolver esto. duración en este caso, dividida

48
00:02:18,280 --> 00:02:19,833
‫por siete.

49
00:02:21,020 --> 00:02:24,350
‫Así es como calculamos la duración en semanas, entonces la

50
00:02:24,350 --> 00:02:26,730
‫duración en días dividida por siete porque hay

51
00:02:26,730 --> 00:02:29,110
‫siete días en la semana, y esa

52
00:02:29,110 --> 00:02:31,030
‫es la duración en semanas.

53
00:02:31,030 --> 00:02:33,510
‫Por ejemplo, si una gira tiene siete días,

54
00:02:33,510 --> 00:02:35,730
‫entonces, por supuesto, será una semana.

55
00:02:35,730 --> 00:02:38,360
‫Ahora utilicé esta función regular aquí porque recuerde,

56
00:02:38,360 --> 00:02:41,250
‫una función de flecha no obtiene su propia

57
00:02:41,250 --> 00:02:43,060
‫palabra clave de disco.

58
00:02:43,060 --> 00:02:45,800
‫Aquí realmente necesitamos la palabra clave disk

59
00:02:45,800 --> 00:02:48,470
‫porque la palabra clave disk

60
00:02:48,470 --> 00:02:51,588
‫en este caso apuntará al documento actual.

61
00:02:51,588 --> 00:02:54,640
‫Y, por lo general, cuando

62
00:02:54,640 --> 00:02:58,714
‫queremos usar esto, siempre debemos usar una función regular.

63
00:02:58,714 --> 00:03:01,140
‫En realidad, en todas partes de

64
00:03:01,140 --> 00:03:04,340
‫Mongoose, siempre usaré estas funciones regulares a las

65
00:03:04,340 --> 00:03:06,061
‫que estamos acostumbrados.

66
00:03:06,061 --> 00:03:11,061
‫Así que dale una oportunidad aquí, y eso es todo.

67
00:03:11,070 --> 00:03:13,180
‫Así es como definimos las semanas

68
00:03:13,180 --> 00:03:15,660
‫de duración, que no se mantendrán en la base

69
00:03:15,660 --> 00:03:19,150
‫de datos, pero solo estarán allí tan pronto como obtengamos los datos.

70
00:03:19,150 --> 00:03:21,820
‫Ahora mismo, en realidad, todavía no estará

71
00:03:21,820 --> 00:03:24,610
‫allí, porque falta una pieza aquí, así

72
00:03:24,610 --> 00:03:27,243
‫que permítanme comenzar mostrándoles eso.

73
00:03:28,760 --> 00:03:31,240
‫Entonces, si intentamos obtener todos los

74
00:03:31,240 --> 00:03:34,050
‫recorridos, verá que las semanas de duración

75
00:03:34,050 --> 00:03:35,768
‫no se encuentran aquí.

76
00:03:35,768 --> 00:03:38,660
‫Y eso es porque necesitamos definir explícitamente

77
00:03:38,660 --> 00:03:41,740
‫en nuestro esquema que queremos las propiedades virtuales en

78
00:03:41,740 --> 00:03:42,683
‫nuestra salida.

79
00:03:43,758 --> 00:03:48,758
‫Y recuerda cómo le dije eso a esta Mangosta. esquema, podemos pasar no solo el

80
00:03:49,320 --> 00:03:51,650
‫objeto con la definición

81
00:03:51,650 --> 00:03:54,050
‫del esquema en sí, sino también

82
00:03:54,050 --> 00:03:56,943
‫un objeto para las opciones del esquema.

83
00:03:58,070 --> 00:04:00,579
‫Y entonces agreguemos eso aquí al final,

84
00:04:00,579 --> 00:04:04,810
‫por lo que este primer objeto aquí es la definición del esquema,

85
00:04:04,810 --> 00:04:07,630
‫y ahora el segundo objeto para las opciones.

86
00:04:07,630 --> 00:04:11,260
‫Y lo que necesitamos especificar aquí es la propiedad de

87
00:04:12,390 --> 00:04:15,410
‫dos JSON aquí, y lo que decimos es

88
00:04:15,410 --> 00:04:19,453
‫que cada vez que los datos se generan como JSON, queremos

89
00:04:20,480 --> 00:04:22,710
‫que los virtuales sean verdaderos.

90
00:04:23,681 --> 00:04:26,657
‫Entonces, básicamente, los virtuales serán parte de la salida.

91
00:04:27,800 --> 00:04:30,000
‫Y ahora estoy duplicando esto porque

92
00:04:30,000 --> 00:04:31,923
‫también queremos decir objetar.

93
00:04:33,370 --> 00:04:36,037
‫Entonces, básicamente, cuando los datos se generan

94
00:04:36,037 --> 00:04:37,320
‫como un objeto.

95
00:04:37,320 --> 00:04:40,010
‫Entonces, si ahora volvemos aquí, deberíamos poder

96
00:04:40,010 --> 00:04:41,993
‫ver las semanas de duración.

97
00:04:43,120 --> 00:04:46,550
‫Esperémoslo, y de hecho, aquí está.

98
00:04:46,550 --> 00:04:51,053
‫Entonces son cinco días, y eso es 0. 71 semanas.

99
00:04:52,250 --> 00:04:55,800
‫Aquí tenemos siete días, y eso es una semana.

100
00:04:55,800 --> 00:04:59,810
‫Bien, eso realmente funciona, genial.

101
00:04:59,810 --> 00:05:01,680
‫Ahora, una cosa que debemos

102
00:05:01,680 --> 00:05:04,840
‫tener en cuenta es que no podemos usar esta propiedad

103
00:05:04,840 --> 00:05:07,840
‫virtual aquí en una consulta, porque técnicamente no forman

104
00:05:07,840 --> 00:05:09,980
‫parte de la base de datos.

105
00:05:09,980 --> 00:05:11,370
‫Entonces no

106
00:05:11,370 --> 00:05:16,370
‫podemos decir, por ejemplo, gira. encuentre dónde la duración de las semanas es igual a uno.

107
00:05:16,618 --> 00:05:19,660
‫Eso no va a funcionar, nuevamente porque esta propiedad

108
00:05:19,660 --> 00:05:22,520
‫no es parte de la base de datos.

109
00:05:22,520 --> 00:05:25,330
‫Ahora, por supuesto, también podríamos haber realizado esta

110
00:05:25,330 --> 00:05:28,450
‫conversión cada vez que consultamos los datos, por ejemplo,

111
00:05:28,450 --> 00:05:30,890
‫como en un controlador, pero esa

112
00:05:30,890 --> 00:05:34,240
‫no sería la mejor práctica simplemente porque queremos tratar de

113
00:05:34,240 --> 00:05:36,960
‫mantener la lógica empresarial y la lógica de

114
00:05:36,960 --> 00:05:39,830
‫la aplicación tan separadas. como sea posible, ¿recuerdas?

115
00:05:39,830 --> 00:05:42,980
‫Así que esa fue toda la charla sobre

116
00:05:42,980 --> 00:05:46,950
‫modelos pesados y controladores delgados de los que hablamos antes,

117
00:05:46,950 --> 00:05:48,850
‫que dice que deberíamos

118
00:05:48,850 --> 00:05:52,390
‫tener modelos con tanta lógica de negocios como podamos

119
00:05:52,390 --> 00:05:54,460
‫descargarles y controladores delgados con

120
00:05:54,460 --> 00:05:56,598
‫la menor lógica de negocios posible.

121
00:05:56,598 --> 00:05:59,840
‫Entonces, las propiedades virtuales como esta son en realidad un

122
00:05:59,840 --> 00:06:01,970
‫buen ejemplo de cómo podemos lograr

123
00:06:01,970 --> 00:06:03,483
‫ese tipo de arquitectura.

124
00:06:04,410 --> 00:06:06,460
‫Entonces, conocer la duración en semanas es

125
00:06:06,460 --> 00:06:09,070
‫una lógica comercial porque tiene que ver con el

126
00:06:09,070 --> 00:06:11,900
‫negocio en sí, no con cosas como solicitudes o respuestas,

127
00:06:11,900 --> 00:06:14,550
‫por lo que hacemos el cálculo directamente en el

128
00:06:14,550 --> 00:06:16,460
‫modelo al que pertenece y no

129
00:06:16,460 --> 00:06:17,863
‫en el controlador.

