﻿1
00:00:01,220 --> 00:00:03,030
‫Narrador: Agora vamos melhorar

2
00:00:03,030 --> 00:00:06,620
‫a implementação da rota aninhada que codificamos na última aula.

3
00:00:06,620 --> 00:00:07,500
‫E

4
00:00:07,500 --> 00:00:11,213
‫para isso, vamos usar um recurso expresso avançado especial.

5
00:00:12,840 --> 00:00:15,070
‫Então, como você deve

6
00:00:15,070 --> 00:00:18,920
‫se lembrar, no último vídeo implementamos uma rota de

7
00:00:18,920 --> 00:00:21,860
‫postagem aninhada simples, apenas esta aqui.

8
00:00:21,860 --> 00:00:25,240
‫Direito. E isso significa que a

9
00:00:25,240 --> 00:00:27,590
‫rota de revisão está dentro da rota do tour.

10
00:00:27,590 --> 00:00:32,130
‫E de novo, porque as resenhas pertencem a passeios em certo sentido.

11
00:00:32,130 --> 00:00:32,963
‫Direito?

12
00:00:32,963 --> 00:00:36,920
‫E isso é uma coisa muito comum de se fazer no design da API.

13
00:00:36,920 --> 00:00:39,950
‫Agora, o problema com esta implementação é que ela

14
00:00:39,950 --> 00:00:41,800
‫é, obviamente, um pouco confusa.

15
00:00:41,800 --> 00:00:45,420
‫E isso porque colocamos uma rota para a criação de uma

16
00:00:45,420 --> 00:00:47,090
‫revisão no roteador de tour.

17
00:00:47,090 --> 00:00:50,430
‫Simplesmente porque uma rota começa com um tour de barra.

18
00:00:50,430 --> 00:00:51,950
‫Isso é um pouco

19
00:00:51,950 --> 00:00:53,500
‫confuso, e o que também

20
00:00:53,500 --> 00:00:56,480
‫é confuso é que temos algo muito semelhante a

21
00:00:56,480 --> 00:00:59,160
‫isso aqui, também em nossa rota de revisão.

22
00:00:59,160 --> 00:01:01,203
‫Então, basicamente isso aqui.

23
00:01:01,203 --> 00:01:04,840
‫Portanto, quando criamos uma nova revisão sem a rota

24
00:01:04,840 --> 00:01:08,450
‫aninhada, esta parte do código aqui é exatamente igual

25
00:01:08,450 --> 00:01:10,600
‫a esta. Direito?

26
00:01:10,600 --> 00:01:12,940
‫E assim, além de ser um

27
00:01:12,940 --> 00:01:16,020
‫pouco confuso, também temos código duplicado que teríamos

28
00:01:16,020 --> 00:01:19,910
‫que manter em dois lugares separados caso quiséssemos mudar alguma coisa.

29
00:01:19,910 --> 00:01:23,120
‫E então, novamente, essa é uma prática muito ruim.

30
00:01:23,120 --> 00:01:26,600
‫E agora vamos corrigir isso usando um recurso

31
00:01:26,600 --> 00:01:28,410
‫expresso avançado chamado mergeParams.

32
00:01:28,410 --> 00:01:31,270
‫Portanto, primeiro vamos remover este código

33
00:01:31,270 --> 00:01:34,690
‫que não pertence realmente ao roteador de tour.

34
00:01:34,690 --> 00:01:38,500
‫Em seguida, importaremos o roteador de revisão para

35
00:01:38,500 --> 00:01:40,840
‫este roteador de tour.

36
00:01:40,840 --> 00:01:41,740
‫OK?

37
00:01:41,740 --> 00:01:44,460
‫Portanto, agora estamos importando o controlador de

38
00:01:44,460 --> 00:01:47,330
‫teste, mas na verdade queremos o roteador de teste.

39
00:01:47,330 --> 00:01:49,220
‫Então, vamos nos livrar

40
00:01:49,220 --> 00:01:51,963
‫deste e, na verdade, vou excluí-lo por completo.

41
00:01:53,090 --> 00:01:53,923
‫E

42
00:01:54,960 --> 00:01:55,880
‫agora, o roteador

43
00:01:57,070 --> 00:01:57,923
‫de revisão.

44
00:02:05,500 --> 00:02:06,333
‫E tudo bem.

45
00:02:07,410 --> 00:02:12,100
‫Então, vamos realmente pegar esse código e colocá-lo aqui no topo,

46
00:02:12,100 --> 00:02:13,480
‫apenas para

47
00:02:13,480 --> 00:02:15,903
‫ver o que estamos fazendo, porque

48
00:02:17,140 --> 00:02:19,730
‫na verdade iremos criar um novo

49
00:02:19,730 --> 00:02:21,620
‫código bem aqui no topo.

50
00:02:21,620 --> 00:02:23,560
‫E então o que vamos

51
00:02:23,560 --> 00:02:24,393
‫fazer

52
00:02:26,781 --> 00:02:29,270
‫aqui é roteador. usar.

53
00:02:29,270 --> 00:02:32,060
‫E então, basicamente, diremos que este roteador

54
00:02:32,060 --> 00:02:33,890
‫de tour deve usar

55
00:02:33,890 --> 00:02:37,373
‫o roteador de revisão caso encontre uma rota como esta.

56
00:02:43,070 --> 00:02:43,903
‫E

57
00:02:46,440 --> 00:02:48,670
‫reveja as rotas.

58
00:02:48,670 --> 00:02:50,600
‫Eu chamei de rotas ou roteador?

59
00:02:50,600 --> 00:02:52,083
‫Deve ser chamado de roteador.

60
00:02:53,630 --> 00:02:54,463
‫OK?

61
00:02:55,690 --> 00:02:58,010
‫Portanto, lembre-se de que o próprio roteador é,

62
00:02:58,010 --> 00:02:59,730
‫na verdade, apenas um middleware.

63
00:02:59,730 --> 00:03:02,580
‫E então podemos usar o método use nele,

64
00:03:02,580 --> 00:03:05,200
‫e então dizer que para esta

65
00:03:05,200 --> 00:03:08,210
‫rota específica aqui, queremos usar o roteador de revisão.

66
00:03:08,210 --> 00:03:09,043
‫OK?

67
00:03:09,043 --> 00:03:11,890
‫E isso é, na verdade, novamente a montagem de um roteador.

68
00:03:11,890 --> 00:03:14,300
‫Então, se você der uma olhada nisso, aqui

69
00:03:14,300 --> 00:03:15,870
‫no app. js,

70
00:03:15,870 --> 00:03:18,140
‫isso é exatamente o que fizemos.

71
00:03:18,140 --> 00:03:20,410
‫Então nós fizemos. use,

72
00:03:20,410 --> 00:03:22,090
‫o URL e

73
00:03:22,090 --> 00:03:23,430
‫o roteador.

74
00:03:23,430 --> 00:03:25,040
‫E aqui, o que

75
00:03:25,040 --> 00:03:27,340
‫estamos fazendo é exatamente a mesma coisa.

76
00:03:27,340 --> 00:03:30,360
‫Portanto, este é o roteador de tour e dizemos

77
00:03:30,360 --> 00:03:33,250
‫bem, sempre que você encontrar um URL como este,

78
00:03:33,250 --> 00:03:36,010
‫bem, basta usar o roteador de revisão.

79
00:03:36,010 --> 00:03:40,010
‫E então, agora, quando temos um URL como este, ele

80
00:03:40,010 --> 00:03:44,700
‫vai começar entrando no roteador de tour aqui, ok, porque, novamente, começa

81
00:03:44,700 --> 00:03:47,963
‫com slash tours, ok, então basicamente é redirecionado

82
00:03:48,920 --> 00:03:49,753
‫para

83
00:03:49,753 --> 00:03:52,920
‫o roteador de tour, então quando chega ao

84
00:03:52,920 --> 00:03:55,400
‫roteador de tour, então ele vai

85
00:03:55,400 --> 00:03:57,800
‫corresponder a este URL aqui

86
00:03:57,800 --> 00:04:02,370
‫e, em seguida, será redirecionado novamente para o roteador de revisão.

87
00:04:02,370 --> 00:04:04,300
‫E assim, temos o roteador

88
00:04:04,300 --> 00:04:06,780
‫de tour e o roteador de teste

89
00:04:06,780 --> 00:04:09,300
‫bem separados e desacoplados um do outro.

90
00:04:09,300 --> 00:04:12,370
‫Mas agora, na verdade, ainda há uma peça faltando

91
00:04:12,370 --> 00:04:15,170
‫porque neste momento este roteador de avaliação

92
00:04:15,170 --> 00:04:19,410
‫aqui não tem acesso a este parâmetro de id de passeio, ok.

93
00:04:19,410 --> 00:04:22,050
‫E agora precisamos habilitar o roteador

94
00:04:22,050 --> 00:04:26,200
‫de revisão para realmente obter acesso a este parâmetro aqui também.

95
00:04:26,200 --> 00:04:29,980
‫Então, vamos agora passar para o roteador de revisão, ok.

96
00:04:29,980 --> 00:04:32,180
‫E então é aqui que os mesgeParams

97
00:04:33,264 --> 00:04:34,810
‫médicos que mencionei no início

98
00:04:34,810 --> 00:04:35,943
‫entram em ação.

99
00:04:38,030 --> 00:04:40,790
‫Então aqui, no expresso. função de roteador,

100
00:04:40,790 --> 00:04:43,010
‫podemos especificar algumas opções, e aqui

101
00:04:43,010 --> 00:04:45,760
‫tudo o que precisamos fazer é definir mergeParams

102
00:04:48,160 --> 00:04:49,170
‫como true.

103
00:04:49,170 --> 00:04:50,440
‫E é isso.

104
00:04:50,440 --> 00:04:53,750
‫Mas por que realmente precisamos disso aqui?

105
00:04:53,750 --> 00:04:55,780
‫Bem, é porque,

106
00:04:55,780 --> 00:04:57,850
‫por padrão, cada roteador só

107
00:04:57,850 --> 00:05:01,780
‫tem acesso aos parâmetros de suas rotas específicas, certo.

108
00:05:01,780 --> 00:05:06,720
‫Mas aqui, nesta rota, neste URL para esta postagem, é claro

109
00:05:06,720 --> 00:05:09,930
‫que não há nenhum ID de tour.

110
00:05:09,930 --> 00:05:12,630
‫Mas, ainda queremos ter acesso ao

111
00:05:12,630 --> 00:05:16,050
‫id do tour que estava neste outro roteador, certo.

112
00:05:16,050 --> 00:05:17,430
‫Então, isso aqui.

113
00:05:17,430 --> 00:05:20,420
‫E assim, para obter acesso a esse

114
00:05:20,420 --> 00:05:21,910
‫parâmetro neste

115
00:05:21,910 --> 00:05:25,570
‫outro roteador, precisamos mesclar fisicamente os parâmetros, ok.

116
00:05:25,570 --> 00:05:29,270
‫E é isso que mergeParams, definido como true, faz.

117
00:05:29,270 --> 00:05:32,663
‫E agora, não importa se obtivermos uma rota como

118
00:05:34,310 --> 00:05:36,853
‫esta, vamos apenas copiá-la aqui.

119
00:05:38,270 --> 00:05:41,383
‫Novamente, é mais fácil visualizá-la com um exemplo.

120
00:05:42,280 --> 00:05:45,647
‫E então, novamente, não importa se obtivermos uma

121
00:05:48,380 --> 00:05:49,840
‫rota como esta,

122
00:05:49,840 --> 00:05:54,530
‫ou uma rota como esta, agora tudo terminará neste manipulador aqui, ok.

123
00:05:54,530 --> 00:05:58,130
‫Então, no final, basicamente, para essa função de manipulador.

124
00:05:58,130 --> 00:06:01,060
‫E mais uma vez isso funciona porque

125
00:06:01,060 --> 00:06:03,710
‫todas as rotas que começam com

126
00:06:03,710 --> 00:06:06,720
‫este tipo de padrão aqui serão redirecionadas para

127
00:06:06,720 --> 00:06:09,960
‫este roteador exatamente nesta linha de código aqui, ok.

128
00:06:09,960 --> 00:06:13,220
‫Então, redirecionamos para o roteador de revisão

129
00:06:13,220 --> 00:06:17,600
‫aqui e ali ele corresponderá a esta rota exata,

130
00:06:17,600 --> 00:06:18,433
‫certo.

131
00:06:18,433 --> 00:06:19,990
‫E graças aos parâmetros

132
00:06:19,990 --> 00:06:22,310
‫de mesclagem, obtemos acesso a essa

133
00:06:22,310 --> 00:06:25,700
‫id que, na verdade, vem do outro roteador anterior.

134
00:06:25,700 --> 00:06:26,940
‫Excelente.

135
00:06:26,940 --> 00:06:28,843
‫Então, vamos fazer uma limpeza

136
00:06:29,870 --> 00:06:31,323
‫aqui, realmente nos

137
00:06:32,260 --> 00:06:33,143
‫livrar disso,

138
00:06:34,230 --> 00:06:35,063
‫disso

139
00:06:36,310 --> 00:06:38,560
‫aqui, e vamos experimentar rapidamente agora.

140
00:06:38,560 --> 00:06:40,940
‫Vou criar um novo comentário aqui e

141
00:06:42,100 --> 00:06:44,143
‫vamos tentar outra ferramenta desta vez.

142
00:06:47,180 --> 00:06:48,533
‫Portanto, o andarilho da cidade.

143
00:06:51,160 --> 00:06:52,990
‫E tudo o que

144
00:06:52,990 --> 00:06:57,030
‫precisamos fazer é alterar essa id aqui na URL, certo.

145
00:06:57,030 --> 00:07:00,250
‫Então, a avaliação vai

146
00:07:00,250 --> 00:07:01,083
‫ser

147
00:07:03,570 --> 00:07:07,190
‫três, e então estava tudo bem.

148
00:07:07,190 --> 00:07:10,943
‫Tudo bem, então essa revisão ainda será feita com

149
00:07:11,960 --> 00:07:14,940
‫o Jonas, então a partir dessa conta,

150
00:07:14,940 --> 00:07:16,300
‫tudo bem,

151
00:07:16,300 --> 00:07:20,890
‫porque ainda é aquela que está logada no momento, tudo bem.

152
00:07:20,890 --> 00:07:21,963
‫Então, vamos enviar

153
00:07:23,160 --> 00:07:26,900
‫isso, e de fato aqui temos o tour que acabamos de especificar,

154
00:07:26,900 --> 00:07:28,383
‫e ainda o mesmo usuário.

155
00:07:30,110 --> 00:07:34,710
‫Então, isso é mais uma vez, só para ter certeza de verificar o

156
00:07:34,710 --> 00:07:37,110
‫tour para ver se agora ele recebe

157
00:07:37,110 --> 00:07:39,500
‫essa revisão e sim, foi.

158
00:07:39,500 --> 00:07:42,710
‫E então aquele truque do parâmetro de mesclagem, que acabamos

159
00:07:42,710 --> 00:07:44,650
‫de implementar, realmente funciona muito bem

160
00:07:44,650 --> 00:07:46,280
‫e conforme o pretendido.

161
00:07:46,280 --> 00:07:48,790
‫Agora, para ver isso em ação, melhor ainda,

162
00:07:48,790 --> 00:07:50,560
‫vamos adaptar a função de henry

163
00:07:50,560 --> 00:07:53,420
‫para obter todas as avaliações de um passeio específico logo

164
00:07:53,420 --> 00:07:54,793
‫no próximo vídeo.

