﻿1
00:00:01,090 --> 00:00:03,300
‫Instructor: Como la siguiente característica de nuestra

2
00:00:03,300 --> 00:00:04,910
‫API, tenemos la limitación de

3
00:00:04,910 --> 00:00:07,290
‫campos, así que, básicamente, para permitir que los

4
00:00:07,290 --> 00:00:08,900
‫clientes elijan qué campos

5
00:00:08,900 --> 00:00:10,543
‫quieren volver en la respuesta.

6
00:00:11,960 --> 00:00:14,530
‫Entonces, para un cliente, siempre es ideal recibir

7
00:00:14,530 --> 00:00:16,980
‫la menor cantidad de datos posible, con

8
00:00:16,980 --> 00:00:19,170
‫el fin de reducir el ancho

9
00:00:19,170 --> 00:00:21,890
‫de banda que se consume con cada solicitud.

10
00:00:21,890 --> 00:00:23,890
‫Y eso, por supuesto, es

11
00:00:23,890 --> 00:00:27,650
‫especialmente cierto cuando tenemos conjuntos de datos con muchos datos, ¿verdad?

12
00:00:27,650 --> 00:00:29,470
‫Por eso, es una característica

13
00:00:29,470 --> 00:00:33,793
‫muy buena permitir que el usuario de la API solo solicite algunos de los campos.

14
00:00:36,470 --> 00:00:41,323
‫Entonces, como tercera característica, tendremos limitación de campo.

15
00:00:42,460 --> 00:00:45,280
‫Y, como antes, permítanme comenzar mostrándoles

16
00:00:45,280 --> 00:00:47,823
‫cómo funcionará aquí en Postman.

17
00:00:49,130 --> 00:00:53,083
‫Entonces, vamos a especificar un campo llamado campos, y luego

18
00:00:53,083 --> 00:00:54,710
‫el nombre de

19
00:00:54,710 --> 00:00:56,810
‫los campos que realmente queremos recibir.

20
00:00:56,810 --> 00:00:58,853
‫Así que digamos que

21
00:01:00,720 --> 00:01:01,773
‫solo queremos

22
00:01:03,570 --> 00:01:08,570
‫el nombre, la duración, la dificultad y el precio, de acuerdo.

23
00:01:08,600 --> 00:01:11,580
‫Y así, la implementación será muy similar a lo que

24
00:01:11,580 --> 00:01:13,513
‫hicimos antes con la clasificación.

25
00:01:14,860 --> 00:01:19,417
‫Entonces, si se requiere. consulta. fields, entonces, de

26
00:01:22,400 --> 00:01:24,270
‫nuevo, creemos una variable

27
00:01:24,270 --> 00:01:28,310
‫para estos campos aquí porque, al igual que antes, Mongodbs,

28
00:01:28,310 --> 00:01:30,610
‫en realidad solicita una cadena con

29
00:01:30,610 --> 00:01:34,100
‫el nombre del campo separado por espacios, ¿de acuerdo?

30
00:01:34,100 --> 00:01:36,100
‫Ahora permítanme comenzar por

31
00:01:36,100 --> 00:01:40,883
‫escribir esa parte, está bien, entonces, la consulta en sí.

32
00:01:41,770 --> 00:01:45,887
‫Entonces la consulta es igual a la consulta. seleccionar, ¿de acuerdo?

33
00:01:48,710 --> 00:01:51,740
‫Y aquí, por ejemplo, espera una cadena

34
00:01:51,740 --> 00:01:56,740
‫como, nombre, luego espacio, duración y un precio, por ejemplo, está bien.

35
00:01:59,420 --> 00:02:01,540
‫Y de esta manera, solo

36
00:02:01,540 --> 00:02:04,070
‫seleccionará estos tres nombres de campo y

37
00:02:04,070 --> 00:02:07,020
‫enviará el resultado que solo contenga eso, ¿de acuerdo?

38
00:02:07,020 --> 00:02:09,150
‫Y en realidad, esta operación

39
00:02:09,150 --> 00:02:14,150
‫de seleccionar solo ciertos nombres de campo se llama proyectar, ¿de acuerdo?

40
00:02:14,720 --> 00:02:17,110
‫Entonces, sigamos adelante y

41
00:02:17,110 --> 00:02:21,930
‫creemos básicamente, la cadena, tal como lo hicimos allí, está bien.

42
00:02:21,930 --> 00:02:26,930
‫Entonces comenzamos con req. consulta. campos, luego lo dividimos por

43
00:02:28,047 --> 00:02:29,663
‫una coma y lo

44
00:02:30,840 --> 00:02:32,490
‫unimos con una cadena vacía.

45
00:02:33,800 --> 00:02:36,570
‫Con un espacio en realidad, lo siento.

46
00:02:36,570 --> 00:02:38,590
‫Entonces, con el espacio y

47
00:02:38,590 --> 00:02:42,683
‫eso es, entonces, producirá esta cadena exacta con este formato exacto.

48
00:02:44,160 --> 00:02:47,033
‫Entonces aquí, todo lo que tenemos que hacer es usar estos campos.

49
00:02:49,490 --> 00:02:53,150
‫Luego, al igual que antes, también quiero

50
00:02:53,150 --> 00:02:57,280
‫agregar un valor predeterminado, así que en caso de

51
00:02:57,280 --> 00:03:01,240
‫que el usuario no especifique el campo de campos,

52
00:03:03,230 --> 00:03:08,230
‫está bien, entonces, en ese caso, simplemente eliminaremos algo, ¿de acuerdo?

53
00:03:08,540 --> 00:03:12,870
‫Y permítanme mostrarles eso primero, así que aquí abajo,

54
00:03:12,870 --> 00:03:16,880
‫siempre tenemos este subrayado subrayado V, que se

55
00:03:16,880 --> 00:03:21,000
‫establece en cero, y Mongodbs simplemente crea estos campos

56
00:03:21,000 --> 00:03:23,020
‫porque los usa internamente.

57
00:03:23,020 --> 00:03:25,850
‫Y podríamos desactivarlos, pero esa no es una buena práctica.

58
00:03:25,850 --> 00:03:29,094
‫Nuevamente, porque Mongodbs realmente los usa, está bien, pero

59
00:03:29,094 --> 00:03:31,530
‫lo que podemos hacer es básicamente

60
00:03:31,530 --> 00:03:34,725
‫nunca enviarlos al cliente, por lo que podemos excluirlos.

61
00:03:34,725 --> 00:03:38,470
‫Y la forma en que lo hacemos es, en lugar de

62
00:03:38,470 --> 00:03:41,290
‫hacer un subrayado, un subrayado V como antes,

63
00:03:41,290 --> 00:03:43,320
‫así que como lo hicimos

64
00:03:43,320 --> 00:03:46,490
‫aquí, básicamente, lo prefijamos con un signo menos, ¿de acuerdo?

65
00:03:46,490 --> 00:03:49,860
‫Y menos entonces no incluye, sino que excluye.

66
00:03:49,860 --> 00:03:51,690
‫Entonces, lo que teníamos antes

67
00:03:51,690 --> 00:03:53,900
‫aquí nuevamente, con el nombre, la duración

68
00:03:53,900 --> 00:03:56,890
‫y el precio, era incluir estos campos en la respuesta.

69
00:03:56,890 --> 00:03:58,580
‫Pero de esta manera,

70
00:03:58,580 --> 00:04:02,560
‫con el menos, tenemos todo excepto el campo V aquí, ¿de acuerdo?

71
00:04:02,560 --> 00:04:05,903
‫Así que estamos excluyendo solo este campo, ¿de acuerdo?

72
00:04:07,060 --> 00:04:08,660
‫Así que sigamos adelante y probemos eso.

73
00:04:09,870 --> 00:04:14,870
‫Envíalo, y esperemos y sí, de hecho, la identificación es por

74
00:04:15,430 --> 00:04:18,250
‫defecto, siempre incluida ¿de acuerdo?

75
00:04:18,250 --> 00:04:21,140
‫Entonces, no podemos eliminar eso, pero además de

76
00:04:21,140 --> 00:04:24,700
‫eso, solo tenemos el nombre, la duración, la dificultad y

77
00:04:24,700 --> 00:04:28,360
‫el precio, está bien, y, por supuesto, también podríamos usar ese

78
00:04:28,360 --> 00:04:31,070
‫signo menos para esa exclusión aquí también.

79
00:04:31,070 --> 00:04:33,570
‫Entonces podríamos tener todo, menos el nombre y

80
00:04:33,570 --> 00:04:35,653
‫menos la duración, por ejemplo.

81
00:04:38,280 --> 00:04:40,200
‫Así que probemos eso también.

82
00:04:40,200 --> 00:04:44,160
‫Y así, si lo marca ahora, no verá el nombre y no

83
00:04:44,160 --> 00:04:46,853
‫verá la duración en ninguna parte aquí.

84
00:04:48,635 --> 00:04:50,690
‫Bien, y ahora solo como

85
00:04:50,690 --> 00:04:53,670
‫prueba final, veamos si nuestro valor predeterminado también funciona.

86
00:04:53,670 --> 00:04:56,930
‫Enviando la respuesta y así, ahora ya no

87
00:04:56,930 --> 00:05:01,410
‫tenemos esa variable V aquí establecida en cero en todos los documentos.

88
00:05:01,410 --> 00:05:04,840
‫Muy bien, genial, ahora hay una última cosa que

89
00:05:04,840 --> 00:05:06,520
‫quiero mostrarles y

90
00:05:06,520 --> 00:05:09,950
‫es que también podemos excluir campos directamente del esquema.

91
00:05:09,950 --> 00:05:11,680
‫Muy bien, y eso puede

92
00:05:11,680 --> 00:05:13,573
‫ser muy útil, por ejemplo, cuando

93
00:05:13,573 --> 00:05:15,720
‫tenemos datos sensibles que solo deberían usarse internamente.

94
00:05:15,720 --> 00:05:17,261
‫Por ejemplo, cosas como

95
00:05:17,261 --> 00:05:19,750
‫las contraseñas nunca deben exponerse al cliente y,

96
00:05:19,750 --> 00:05:21,320
‫por lo tanto, podemos excluir

97
00:05:21,320 --> 00:05:23,372
‫algunos campos directamente en el esquema.

98
00:05:23,372 --> 00:05:26,320
‫Por ejemplo, es posible que no queramos

99
00:05:26,320 --> 00:05:29,780
‫que el usuario vea cuándo se creó exactamente cada recorrido.

100
00:05:29,780 --> 00:05:31,950
‫Por ejemplo, es posible que tour

101
00:05:31,950 --> 00:05:34,020
‫ya sea algo antiguo

102
00:05:34,020 --> 00:05:38,320
‫o algo así, así que, digamos que siempre queremos ocultar este

103
00:05:38,320 --> 00:05:40,753
‫campo createdAt, de acuerdo, para que

104
00:05:42,050 --> 00:05:44,800
‫podamos ir a nuestro esquema, que está

105
00:05:44,800 --> 00:05:47,950
‫en el modelo de tour, por supuesto, y

106
00:05:47,950 --> 00:05:52,023
‫luego en createdAt, simplemente establecemos la propiedad select aquí en false.

107
00:05:54,050 --> 00:05:58,090
‫Y ahora, cuando tratamos de obtener nuestros resultados, ves que ya

108
00:05:58,090 --> 00:06:00,490
‫no está ahí, ¿de acuerdo?

109
00:06:02,090 --> 00:06:03,460
‫Y así,

110
00:06:03,460 --> 00:06:06,690
‫básicamente, podemos ocultarlo permanentemente de la salida.

111
00:06:06,690 --> 00:06:11,110
‫Perfecto, una característica más que realmente está funcionando ahora, así

112
00:06:11,110 --> 00:06:13,723
‫que pasemos a la siguiente.

