﻿1
00:00:00,940 --> 00:00:02,720
‫Jonas: Aprendemos sobre o middleware

2
00:00:02,720 --> 00:00:05,860
‫de documento e consulta, e agora o último

3
00:00:05,860 --> 00:00:09,033
‫middleware sobre o qual falaremos é o middleware de

4
00:00:10,560 --> 00:00:12,253
‫agregação e, como você

5
00:00:13,168 --> 00:00:14,930
‫provavelmente pode adivinhar, o middleware

6
00:00:14,930 --> 00:00:18,350
‫de agregação nos permite adicionar ganchos antes ou depois de

7
00:00:18,350 --> 00:00:19,970
‫uma agregação acontecer,

8
00:00:19,970 --> 00:00:23,830
‫e assim vamos agora continuar com nosso exemplo anterior onde escondemos

9
00:00:23,830 --> 00:00:27,540
‫os passeios secretos das consultas, agora em uma agregação os

10
00:00:27,540 --> 00:00:30,270
‫passeios secretos ainda estão sendo usados, certo?

11
00:00:30,270 --> 00:00:32,220
‫Portanto, vamos confirmar rapidamente

12
00:00:33,840 --> 00:00:37,290
‫isso, por exemplo, aqui em nossas estatísticas do tour

13
00:00:37,290 --> 00:00:39,940
‫get, então foi onde usamos a

14
00:00:39,940 --> 00:00:42,700
‫primeira agregação e você vê que

15
00:00:42,700 --> 00:00:45,500
‫temos quatro tours aqui, quatro no fácil

16
00:00:45,500 --> 00:00:49,060
‫e três no médio e isso perfaz 11, mas

17
00:00:49,060 --> 00:00:52,480
‫já saiba que, na verdade, queremos apenas 10 tours.

18
00:00:52,480 --> 00:00:55,380
‫Portanto, há 10 tours que não

19
00:00:55,380 --> 00:00:58,900
‫são secretos e um que é secreto, e agora

20
00:00:58,900 --> 00:01:01,880
‫temos todos esses 11 tours aqui e,

21
00:01:01,880 --> 00:01:05,000
‫basicamente, queremos excluir o tour secreto do agregado.

22
00:01:05,000 --> 00:01:06,373
‫Então, como poderíamos fazer isso?

23
00:01:07,430 --> 00:01:09,680
‫Bem, vamos dar uma olhada

24
00:01:09,680 --> 00:01:14,680
‫em onde nossa agregação está realmente acontecendo, então está aqui embaixo, sim, em obter

25
00:01:14,900 --> 00:01:19,270
‫as etapas do tour, e então o que podemos fazer é aqui

26
00:01:19,270 --> 00:01:22,640
‫neste estado de correspondência simplesmente excluir os tours secretos

27
00:01:22,640 --> 00:01:24,520
‫que são verdadeiros, certo?

28
00:01:24,520 --> 00:01:26,740
‫Isso seria muito fácil de

29
00:01:26,740 --> 00:01:29,080
‫adicionar aqui, mas teríamos que adicionar

30
00:01:29,080 --> 00:01:32,080
‫a mesma coisa aqui na outra agregação que

31
00:01:32,080 --> 00:01:34,680
‫temos, e se tivéssemos ainda mais agregações,

32
00:01:34,680 --> 00:01:37,860
‫teríamos que adicionar isso em todas elas e isso

33
00:01:37,860 --> 00:01:40,560
‫é claro que não é uma boa

34
00:01:40,560 --> 00:01:44,010
‫ideia, porque, por exemplo, podemos esquecer de fazer isso

35
00:01:44,010 --> 00:01:48,820
‫e também é apenas código repetitivo, então vamos simplesmente excluí-lo no nível do

36
00:01:48,820 --> 00:01:53,280
‫modelo, tudo bem, então vamos adicionar middleware de agregação aqui começando com

37
00:01:54,470 --> 00:01:55,893
‫um comentário.

38
00:01:59,450 --> 00:02:03,970
‫Portanto, middleware de agregação e assim como

39
00:02:05,070 --> 00:02:10,040
‫antes, temos tourSchema. pré, então queremos que isso aconteça antes

40
00:02:10,040 --> 00:02:12,110
‫que a agregação seja

41
00:02:13,060 --> 00:02:16,573
‫realmente executada e aqui usamos o gancho de agregação.

42
00:02:18,230 --> 00:02:22,047
‫Tudo bem e então nossa função, que

43
00:02:22,047 --> 00:02:26,332
‫novamente aceita a próxima função, chamando o próximo middleware.

44
00:02:26,332 --> 00:02:31,332
‫Tudo bem, então vamos começar dando uma olhada nisso, então

45
00:02:32,530 --> 00:02:37,113
‫lembre-se de que aqui no middleware de consulta esse

46
00:02:37,113 --> 00:02:40,283
‫objeto aponta para a consulta atual.

47
00:02:41,130 --> 00:02:44,590
‫Então, aqui no middleware de documento, esse objeto

48
00:02:44,590 --> 00:02:46,850
‫aponta para o documento

49
00:02:46,850 --> 00:02:50,330
‫atual e, aqui embaixo, no middleware de agregação,

50
00:02:50,330 --> 00:02:53,880
‫isso vai apontar para o objeto de agregação atual.

51
00:02:53,880 --> 00:02:56,764
‫Ok, vamos dar uma olhada nisso no

52
00:02:56,764 --> 00:03:00,113
‫console, mas antes disso, deixe-me remover este log aqui.

53
00:03:01,590 --> 00:03:05,890
‫Tudo bem, salve, execute esta agregação aqui e está

54
00:03:08,520 --> 00:03:12,520
‫demorando muito, então vamos cancelar e voltar e

55
00:03:13,750 --> 00:03:16,580
‫isso é provavelmente porque não estamos

56
00:03:16,580 --> 00:03:21,460
‫chamando em seguida aqui, e como já sabemos, ficamos presos

57
00:03:21,460 --> 00:03:23,580
‫na função de

58
00:03:23,580 --> 00:03:26,340
‫middleware e isso não é bom.

59
00:03:26,340 --> 00:03:29,063
‫Então, vamos tentar de novo agora enviar, e

60
00:03:30,120 --> 00:03:33,490
‫sim, agora estamos de volta e agora vamos dar uma

61
00:03:33,490 --> 00:03:35,470
‫olhada no objeto de agregação.

62
00:03:35,470 --> 00:03:37,700
‫Ok, então há um monte

63
00:03:39,980 --> 00:03:43,800
‫de coisas aqui, então não é realmente interessante aqui e eu

64
00:03:44,950 --> 00:03:48,330
‫realmente não consigo encontrar o que estou tentando mostrar a

65
00:03:48,330 --> 00:03:53,330
‫vocês aqui, então vamos simplesmente adicionar isso. pipeline está bem porque o que

66
00:03:53,450 --> 00:03:57,140
‫eu realmente queria mostrar a vocês é apenas o objeto pipeline.

67
00:03:57,140 --> 00:04:00,620
‫Ok, e na verdade é um pipeline assim, então é

68
00:04:00,620 --> 00:04:03,053
‫na verdade uma função, um método.

69
00:04:04,970 --> 00:04:06,593
‫Então, vamos limpar o console aqui.

70
00:04:07,820 --> 00:04:12,820
‫Tente de novo, e aqui obtemos o pipeline de agregação, que é

71
00:04:14,350 --> 00:04:17,620
‫simplesmente o array que passamos para a

72
00:04:17,620 --> 00:04:19,770
‫função de agregação antes.

73
00:04:19,770 --> 00:04:23,040
‫Certo, então vamos dar uma olhada

74
00:04:23,040 --> 00:04:26,400
‫e aqui temos aquele array, este não este.

75
00:04:26,400 --> 00:04:28,200
‫Portanto, temos a correspondência para

76
00:04:28,200 --> 00:04:30,910
‫o grupo e, em seguida, a classificação, se dermos

77
00:04:30,910 --> 00:04:34,470
‫uma olhada aqui no console, temos de fato nossa correspondência com a

78
00:04:34,470 --> 00:04:37,320
‫média de classificações que temos agrupar e, em seguida, classificar.

79
00:04:37,320 --> 00:04:41,020
‫Esse é exatamente o pipeline que especificamos antes, e

80
00:04:41,020 --> 00:04:44,570
‫agora, para filtrar os tours secretos, tudo o que

81
00:04:44,570 --> 00:04:47,970
‫precisamos fazer é adicionar outro estágio de correspondência

82
00:04:47,970 --> 00:04:50,700
‫bem no início dessa matriz de

83
00:04:50,700 --> 00:04:53,713
‫pipeline, certo e vamos fazer exatamente isso.

84
00:04:55,029 --> 00:04:58,040
‫Então vamos fazer isso aqui antes

85
00:04:58,040 --> 00:05:03,040
‫deste log, então isso. pipeline e lembre-se de que esta é uma matriz

86
00:05:03,890 --> 00:05:06,130
‫e como adicionamos um elemento no início de

87
00:05:06,130 --> 00:05:06,963
‫uma matriz?

88
00:05:08,262 --> 00:05:11,510
‫Usamos unshift e, portanto, esse é um método JavaScript

89
00:05:11,510 --> 00:05:15,340
‫padrão para arrays, também temos que mudar para adicionar no

90
00:05:15,340 --> 00:05:18,470
‫final do array e unshift no início do

91
00:05:18,470 --> 00:05:21,690
‫array, e novamente o que queremos adicionar aqui

92
00:05:21,690 --> 00:05:25,490
‫agora é apenas adicionar outro estágio, muito parecido com o

93
00:05:25,490 --> 00:05:26,803
‫que temos aqui.

94
00:05:29,690 --> 00:05:34,690
‫Portanto, combine e, em seguida, secretTour, diferente de true.

95
00:05:40,460 --> 00:05:45,340
‫Salve-o e, portanto, este código aqui basicamente é exatamente

96
00:05:45,340 --> 00:05:48,330
‫o que temos aqui, certo?

97
00:05:48,330 --> 00:05:51,220
‫Basicamente removendo da saída todos

98
00:05:51,220 --> 00:05:55,260
‫os documentos que têm secretTour definido como verdadeiro, certo?

99
00:05:55,260 --> 00:06:00,160
‫Então, se você salvar agora, vamos verificar e lembrar que temos agora

100
00:06:00,160 --> 00:06:03,250
‫11 tours, quatro, quatro e três, então

101
00:06:03,250 --> 00:06:06,780
‫vamos verificar o resultado depois e agora de fato

102
00:06:06,780 --> 00:06:10,340
‫um dos seus difíceis se foi, então só agora

103
00:06:10,340 --> 00:06:13,460
‫temos três turnês difíceis, o que significa que

104
00:06:13,460 --> 00:06:15,930
‫voltamos a ter apenas 10.

105
00:06:15,930 --> 00:06:20,260
‫Ok e na verdade podemos confirmar que nossa turnê super

106
00:06:20,260 --> 00:06:24,630
‫secreta foi uma turnê difícil, certo e isso agora acabou

107
00:06:24,630 --> 00:06:27,700
‫e nossos resultados agora são apenas

108
00:06:27,700 --> 00:06:30,800
‫sobre as turnês não secretas regulares, certo?

109
00:06:30,800 --> 00:06:34,670
‫E podemos novamente dar uma olhada em nosso pipeline de agregação

110
00:06:34,670 --> 00:06:38,640
‫agora e aqui você vê que agora temos esses dois estágios correspondentes.

111
00:06:38,640 --> 00:06:41,150
‫Ótimo e, como mencionei antes,

112
00:06:41,150 --> 00:06:45,050
‫não há problema em repetir esses estágios, podemos ter quantos

113
00:06:45,050 --> 00:06:49,920
‫estágios de correspondência quisermos, ok e é isso para o middleware de agregação.

114
00:06:49,920 --> 00:06:53,740
‫Não vou incluir nenhum código postal aqui para middleware que não

115
00:06:53,740 --> 00:06:56,290
‫seja realmente necessário, e também não vou

116
00:06:56,290 --> 00:06:59,050
‫falar sobre middleware de modelo aqui porque ele

117
00:06:59,050 --> 00:07:01,570
‫realmente não é tão importante.

118
00:07:01,570 --> 00:07:04,750
‫Tudo bem, então o middleware é algo muito legal

119
00:07:04,750 --> 00:07:08,180
‫e importante que podemos adicionar aos nossos modelos, e há

120
00:07:08,180 --> 00:07:10,560
‫de fato outras coisas legais que podemos

121
00:07:10,560 --> 00:07:13,430
‫fazer com os modelos, por exemplo, implementar métodos

122
00:07:13,430 --> 00:07:16,690
‫de instância que são métodos que estarão disponíveis em

123
00:07:16,690 --> 00:07:19,220
‫todos os documentos após serem consultado, e

124
00:07:19,220 --> 00:07:21,410
‫isso novamente pode ser muito útil,

125
00:07:21,410 --> 00:07:23,402
‫e faremos isso mais

126
00:07:23,402 --> 00:07:25,570
‫tarde na seção de autenticação também.

127
00:07:25,570 --> 00:07:27,940
‫Vou deixar isso um pouco mais tarde,

128
00:07:27,940 --> 00:07:30,110
‫agora o que vamos fazer

129
00:07:30,110 --> 00:07:34,170
‫nesta seção apenas para terminar é realmente adicionar alguma validação, certo e

130
00:07:34,170 --> 00:07:37,070
‫nos próximos dois vídeos vamos falar sobre isso.

