﻿1
00:00:01,090 --> 00:00:03,300
‫Instrutor: Como o próximo recurso em

2
00:00:03,300 --> 00:00:04,910
‫nossa API, temos a

3
00:00:04,910 --> 00:00:07,290
‫limitação de campo, basicamente, para permitir que

4
00:00:07,290 --> 00:00:08,900
‫os clientes escolham quais

5
00:00:08,900 --> 00:00:10,543
‫campos desejam obter na resposta.

6
00:00:11,960 --> 00:00:14,530
‫Portanto, para um cliente, é sempre ideal

7
00:00:14,530 --> 00:00:16,980
‫receber o mínimo de dados possível, a

8
00:00:16,980 --> 00:00:19,170
‫fim de reduzir a largura

9
00:00:19,170 --> 00:00:21,890
‫de banda que é consumida a cada solicitação.

10
00:00:21,890 --> 00:00:23,890
‫E isso, é claro, é

11
00:00:23,890 --> 00:00:27,650
‫especialmente verdadeiro quando temos conjuntos de dados com muitos dados, certo?

12
00:00:27,650 --> 00:00:29,470
‫E, portanto, é um recurso

13
00:00:29,470 --> 00:00:33,793
‫muito bom permitir que o usuário da API solicite apenas alguns dos campos.

14
00:00:36,470 --> 00:00:41,323
‫Assim, como terceiro recurso, teremos a limitação de campo.

15
00:00:42,460 --> 00:00:45,280
‫E, assim como antes, deixe-me começar mostrando

16
00:00:45,280 --> 00:00:47,823
‫como vai funcionar aqui no Postman.

17
00:00:49,130 --> 00:00:53,083
‫Então, vamos especificar um campo chamado fields e, em seguida,

18
00:00:53,083 --> 00:00:54,710
‫o nome dos

19
00:00:54,710 --> 00:00:56,810
‫campos que realmente queremos receber.

20
00:00:56,810 --> 00:00:58,853
‫Então, digamos que queremos

21
00:01:00,720 --> 00:01:01,773
‫apenas o

22
00:01:03,570 --> 00:01:08,570
‫nome, a duração, a dificuldade e o preço, tudo bem.

23
00:01:08,600 --> 00:01:11,580
‫E assim, a implementação será realmente muito semelhante ao que

24
00:01:11,580 --> 00:01:13,513
‫fizemos antes com a classificação.

25
00:01:14,860 --> 00:01:19,417
‫Então, se req. inquerir. campos, então vamos,

26
00:01:22,400 --> 00:01:24,270
‫na verdade, novamente, criar

27
00:01:24,270 --> 00:01:28,310
‫uma variável para esses campos aqui porque, assim como antes,

28
00:01:28,310 --> 00:01:30,610
‫Mongodbs, na verdade solicita uma string

29
00:01:30,610 --> 00:01:34,100
‫com o nome do campo separado por espaços, certo?

30
00:01:34,100 --> 00:01:36,100
‫Agora, deixe-me começar

31
00:01:36,100 --> 00:01:40,883
‫escrevendo essa parte, ok, então, a própria consulta.

32
00:01:41,770 --> 00:01:45,887
‫Portanto, consulta é igual a consulta. selecione, ok?

33
00:01:48,710 --> 00:01:51,740
‫E aqui, por exemplo, ele espera uma

34
00:01:51,740 --> 00:01:56,740
‫string como, nome e espaço, duração e um preço por exemplo, ok.

35
00:01:59,420 --> 00:02:01,540
‫E assim, ele vai selecionar

36
00:02:01,540 --> 00:02:04,070
‫apenas esses três nomes de campo

37
00:02:04,070 --> 00:02:07,020
‫e devolver o resultado contendo apenas isso, ok?

38
00:02:07,020 --> 00:02:09,150
‫E, na verdade, essa operação

39
00:02:09,150 --> 00:02:14,150
‫de selecionar apenas determinados nomes de campo é chamada de projeção, ok?

40
00:02:14,720 --> 00:02:17,110
‫Então, vamos prosseguir e

41
00:02:17,110 --> 00:02:21,930
‫criar basicamente a string, exatamente como fizemos lá em cima.

42
00:02:21,930 --> 00:02:26,930
‫Então, começamos com req. inquerir. campos, então nós o dividimos

43
00:02:28,047 --> 00:02:29,663
‫por uma vírgula, e

44
00:02:30,840 --> 00:02:32,490
‫juntamos com uma string vazia.

45
00:02:33,800 --> 00:02:36,570
‫Com um espaço, na verdade, desculpe.

46
00:02:36,570 --> 00:02:38,590
‫Então, com o espaço

47
00:02:38,590 --> 00:02:42,683
‫e isso, vamos produzir essa string exata com esse formato exato.

48
00:02:44,160 --> 00:02:47,033
‫Então, aqui, tudo o que precisamos fazer é usar esses campos.

49
00:02:49,490 --> 00:02:53,150
‫Então, como antes, eu também quero

50
00:02:53,150 --> 00:02:57,280
‫adicionar um padrão, então caso o usuário não

51
00:02:57,280 --> 00:03:01,240
‫especifique o campo dos campos, ok, então,

52
00:03:03,230 --> 00:03:08,230
‫nesse caso, vamos apenas remover algo de fato, ok?

53
00:03:08,540 --> 00:03:12,870
‫E deixe-me mostrar isso a você primeiro, então aqui embaixo,

54
00:03:12,870 --> 00:03:16,880
‫sempre temos esse sublinhado sublinhado V, que é definido

55
00:03:16,880 --> 00:03:21,000
‫como zero, e o Mongodbs apenas cria esses campos

56
00:03:21,000 --> 00:03:23,020
‫porque os usa internamente.

57
00:03:23,020 --> 00:03:25,850
‫E poderíamos desativá-los, mas essa não é uma boa prática.

58
00:03:25,850 --> 00:03:29,094
‫Novamente, porque o Mongodbs realmente os usa, tudo bem,

59
00:03:29,094 --> 00:03:31,530
‫mas o que podemos fazer é

60
00:03:31,530 --> 00:03:34,725
‫basicamente nunca enviá-los ao cliente, portanto, podemos excluí-los.

61
00:03:34,725 --> 00:03:38,470
‫E a maneira como fazemos isso é, em vez de

62
00:03:38,470 --> 00:03:41,290
‫fazer o sublinhado e o sublinhado V,

63
00:03:41,290 --> 00:03:43,320
‫como antes, então, como fizemos

64
00:03:43,320 --> 00:03:46,490
‫aqui, basicamente, apenas prefixamos com um menos, ok?

65
00:03:46,490 --> 00:03:49,860
‫E menos significa então não incluir, mas excluir.

66
00:03:49,860 --> 00:03:51,690
‫Então, o que tínhamos antes

67
00:03:51,690 --> 00:03:53,900
‫aqui novamente, com o nome, a duração

68
00:03:53,900 --> 00:03:56,890
‫e o preço, era incluir esses campos na resposta.

69
00:03:56,890 --> 00:03:58,580
‫Mas desta forma, com

70
00:03:58,580 --> 00:04:02,560
‫o menos, temos tudo exceto o campo V aqui, ok?

71
00:04:02,560 --> 00:04:05,903
‫Então, estamos excluindo apenas este campo, certo?

72
00:04:07,060 --> 00:04:08,660
‫Então, vamos testar isso.

73
00:04:09,870 --> 00:04:14,870
‫Envie, e vamos aguardar e sim, de fato, o ID é

74
00:04:15,430 --> 00:04:18,250
‫por padrão, sempre incluindo ok?

75
00:04:18,250 --> 00:04:21,140
‫Então, não podemos remover isso, mas além disso,

76
00:04:21,140 --> 00:04:24,700
‫temos apenas o nome, a duração, a dificuldade e

77
00:04:24,700 --> 00:04:28,360
‫o preço, ok, e poderíamos, é claro, também usar esse

78
00:04:28,360 --> 00:04:31,070
‫menos para essa exclusão aqui também.

79
00:04:31,070 --> 00:04:33,570
‫Então poderíamos ter tudo, menos o nome e

80
00:04:33,570 --> 00:04:35,653
‫menos a duração, por exemplo.

81
00:04:38,280 --> 00:04:40,200
‫Então, vamos testar isso também.

82
00:04:40,200 --> 00:04:44,160
‫E assim, se você verificar agora, você não verá o nome, e

83
00:04:44,160 --> 00:04:46,853
‫não verá a duração em nenhum lugar aqui.

84
00:04:48,635 --> 00:04:50,690
‫Certo, e agora apenas como um

85
00:04:50,690 --> 00:04:53,670
‫teste final, vamos ver se nosso padrão funciona bem.

86
00:04:53,670 --> 00:04:56,930
‫Enviando a resposta e então, agora não temos

87
00:04:56,930 --> 00:05:01,410
‫mais aquela variável V aqui definida como zero em todos os documentos.

88
00:05:01,410 --> 00:05:04,840
‫Certo, ótimo, agora há uma última coisa que eu

89
00:05:04,840 --> 00:05:06,520
‫quero mostrar a

90
00:05:06,520 --> 00:05:09,950
‫você, que também podemos excluir campos diretamente do esquema.

91
00:05:09,950 --> 00:05:11,680
‫Tudo bem, e isso pode

92
00:05:11,680 --> 00:05:13,573
‫ser muito útil, por exemplo, quando temos

93
00:05:13,573 --> 00:05:15,720
‫dados confidenciais que só devem ser usados internamente.

94
00:05:15,720 --> 00:05:17,261
‫Por exemplo, coisas

95
00:05:17,261 --> 00:05:19,750
‫como senhas nunca devem ser expostas ao

96
00:05:19,750 --> 00:05:21,320
‫cliente e, portanto, podemos

97
00:05:21,320 --> 00:05:23,372
‫excluir alguns campos diretamente no esquema.

98
00:05:23,372 --> 00:05:26,320
‫Portanto, por exemplo, podemos não querer que

99
00:05:26,320 --> 00:05:29,780
‫o usuário veja exatamente quando cada tour foi criado.

100
00:05:29,780 --> 00:05:31,950
‫Por exemplo, o passeio pode

101
00:05:31,950 --> 00:05:34,020
‫já ser meio

102
00:05:34,020 --> 00:05:38,320
‫antigo ou algo assim e, então, digamos que queremos sempre ocultar

103
00:05:38,320 --> 00:05:40,753
‫esse campo createdAt, certo, então podemos

104
00:05:42,050 --> 00:05:44,800
‫entrar em nosso esquema, que está

105
00:05:44,800 --> 00:05:47,950
‫no modelo de passeio, é claro, e então

106
00:05:47,950 --> 00:05:52,023
‫em createdAt, simplesmente definimos a propriedade select aqui como false.

107
00:05:54,050 --> 00:05:58,090
‫E agora, quando tentamos obter nossos resultados, você vê que na

108
00:05:58,090 --> 00:06:00,490
‫verdade não está mais lá, certo?

109
00:06:02,090 --> 00:06:03,460
‫E assim,

110
00:06:03,460 --> 00:06:06,690
‫podemos basicamente, ocultar permanentemente isso da saída.

111
00:06:06,690 --> 00:06:11,110
‫Perfeito, é mais um recurso que está realmente funcionando agora e

112
00:06:11,110 --> 00:06:13,723
‫vamos seguir direto para o próximo.

