﻿1
00:00:01,090 --> 00:00:03,630
‫Instrutor: Agora vamos implementar a classificação de resultados.

2
00:00:03,630 --> 00:00:07,000
‫Para permitir que nossos usuários classifiquem o resultado com base

3
00:00:07,000 --> 00:00:08,763
‫em um determinado campo.

4
00:00:10,180 --> 00:00:14,033
‫Então, vamos agora dar uma olhada em todos os nossos resultados aqui por enquanto.

5
00:00:14,970 --> 00:00:17,930
‫Tudo bem, digamos que realmente

6
00:00:17,930 --> 00:00:21,129
‫desejamos classificar esses resultados, digamos por preço.

7
00:00:21,129 --> 00:00:24,560
‫Ok, começando com o preço mais baixo e depois

8
00:00:24,560 --> 00:00:27,300
‫subindo até o preço mais alto.

9
00:00:27,300 --> 00:00:29,462
‫Tudo bem, então temos todos os tipos de preços.

10
00:00:29,462 --> 00:00:33,830
‫397, 497, 1197, 1497, 997.

11
00:00:36,330 --> 00:00:38,950
‫Temos quase 3.000 aqui.

12
00:00:38,950 --> 00:00:42,570
‫Então 1497 e então eles não estão realmente em ordem, então

13
00:00:42,570 --> 00:00:47,450
‫vamos permitir que o usuário basicamente classifique esses resultados com base em um campo

14
00:00:47,450 --> 00:00:50,963
‫que pode ser passado usando a string de consulta.

15
00:00:53,690 --> 00:00:58,663
‫Digamos que desejamos classificar por preço.

16
00:00:59,860 --> 00:01:00,890
‫Tudo bem.

17
00:01:00,890 --> 00:01:03,480
‫Então, se rodarmos agora, é claro,

18
00:01:03,480 --> 00:01:05,860
‫nada acontecerá, ele ainda mostrará

19
00:01:05,860 --> 00:01:09,900
‫exatamente os mesmos nove resultados e na mesma ordem, porque

20
00:01:09,900 --> 00:01:13,710
‫antes, na última aula, filtramos basicamente este campo de classificação.

21
00:01:13,710 --> 00:01:14,543
‫Direito?

22
00:01:14,543 --> 00:01:16,883
‫E agora vamos realmente usar isso.

23
00:01:18,020 --> 00:01:19,120
‫Tudo bem?

24
00:01:19,120 --> 00:01:22,650
‫Portanto, lembre-se de como criamos o objeto de consulta e,

25
00:01:22,650 --> 00:01:25,430
‫em seguida, excluímos o campo de classificação

26
00:01:25,430 --> 00:01:28,840
‫aqui, para que ele não poluísse nossa filtragem, certo?

27
00:01:28,840 --> 00:01:33,073
‫Mas agora nós realmente precisamos dele e vamos usá-lo agora.

28
00:01:34,150 --> 00:01:38,040
‫Portanto, o terceiro recurso aqui é a classificação.

29
00:01:38,040 --> 00:01:39,790
‫Ou, na verdade, bem,

30
00:01:39,790 --> 00:01:43,977
‫esse é o segundo, então vamos chamá-lo de 1A e 1B.

31
00:01:43,977 --> 00:01:44,963
‫Tudo bem?

32
00:01:46,400 --> 00:01:51,400
‫Então, digamos que se realmente houver um tipo, pedido de

33
00:01:53,750 --> 00:01:56,980
‫tipo. inquerir. organizar.

34
00:01:56,980 --> 00:01:58,913
‫Ok, e você vê isso aqui.

35
00:01:59,750 --> 00:02:04,210
‫Agora sumiu por causa desse erro aqui, mas de qualquer maneira.

36
00:02:04,210 --> 00:02:06,427
‫Obviamente, em nossa última

37
00:02:06,427 --> 00:02:09,290
‫solicitação, há um objeto de consulta

38
00:02:09,290 --> 00:02:12,840
‫aqui e, portanto, tínhamos a propriedade sort, certo?

39
00:02:12,840 --> 00:02:15,010
‫E se houver uma propriedade

40
00:02:15,010 --> 00:02:16,780
‫de classificação, bem, isso

41
00:02:16,780 --> 00:02:20,935
‫significa que queremos realmente classificar os resultados com base no valor.

42
00:02:20,935 --> 00:02:23,400
‫Agora, uma coisa rápida que

43
00:02:23,400 --> 00:02:26,040
‫precisamos fazer é mudar esta consulta de

44
00:02:26,040 --> 00:02:29,630
‫variável aqui de uma constante para uma variável normal.

45
00:02:29,630 --> 00:02:31,420
‫Então vamos, ok?

46
00:02:31,420 --> 00:02:34,284
‫Porque agora nós realmente queremos acorrentar algo

47
00:02:34,284 --> 00:02:36,000
‫a esta consulta.

48
00:02:36,000 --> 00:02:39,600
‫Portanto, a nova consulta será consulta. organizar.

49
00:02:42,410 --> 00:02:46,580
‫E queremos classificá-lo por req. inquerir. organizar.

50
00:02:48,607 --> 00:02:52,060
‫Tudo bem, porque esse será o valor do campo, então,

51
00:02:52,060 --> 00:02:53,760
‫neste caso, preço, e o

52
00:02:53,760 --> 00:02:56,270
‫Mongoose irá classificar automaticamente o resultado com

53
00:02:56,270 --> 00:02:57,910
‫base no preço.

54
00:02:57,910 --> 00:02:59,640
‫E agora, caso você esteja

55
00:02:59,640 --> 00:03:02,600
‫se perguntando, por que funciona assim, então por que

56
00:03:02,600 --> 00:03:05,910
‫fizemos isso aqui, lembre-se do que conversamos nas últimas palestras.

57
00:03:05,910 --> 00:03:08,910
‫Então, lembre-se de como é esse passeio. find here

58
00:03:08,910 --> 00:03:11,030
‫irá retornar uma consulta, certo?

59
00:03:11,030 --> 00:03:13,320
‫E então armazenamos esse objeto de consulta

60
00:03:13,320 --> 00:03:15,320
‫aqui nesta variável, para que mais

61
00:03:15,320 --> 00:03:17,800
‫tarde possamos continuar a encadear mais métodos a ele.

62
00:03:17,800 --> 00:03:19,990
‫Portanto, mais desses métodos estão disponíveis

63
00:03:19,990 --> 00:03:23,150
‫em todos os documentos criados por meio da classe de consulta.

64
00:03:23,150 --> 00:03:24,780
‫Ok, lembra disso?

65
00:03:24,780 --> 00:03:27,620
‫Acho que conversamos sobre isso em profundidade há duas palestras.

66
00:03:27,620 --> 00:03:31,180
‫Caso isso ainda esteja um pouco confuso para você,

67
00:03:31,180 --> 00:03:32,560
‫é só voltar

68
00:03:32,560 --> 00:03:36,450
‫lá ou você também pode dar uma olhada na documentação, certo?

69
00:03:36,450 --> 00:03:40,840
‫Agora vamos realmente testar isso.

70
00:03:40,840 --> 00:03:43,500
‫Portanto, a classificação ainda está definida para o preço.

71
00:03:43,500 --> 00:03:45,402
‫Vou mandar agora.

72
00:03:45,402 --> 00:03:48,210
‫Vamos dar uma olhada no resultado.

73
00:03:48,210 --> 00:03:50,250
‫E de fato começamos com o preço mais baixo,

74
00:03:50,250 --> 00:03:52,270
‫mas acho que já tínhamos isso antes.

75
00:03:52,270 --> 00:03:57,270
‫Então, começamos com 397, depois 497, 997, 1197, 1497

76
00:03:59,310 --> 00:04:04,020
‫e você vê que os preços continuam aumentando.

77
00:04:04,020 --> 00:04:07,523
‫Então, 1997, 2997.

78
00:04:08,570 --> 00:04:11,163
‫E então, sim, na verdade, eles agora estão classificados.

79
00:04:12,830 --> 00:04:13,663
‫OK?

80
00:04:13,663 --> 00:04:16,610
‫Então, nós os classificamos pelo preço em ordem crescente.

81
00:04:16,610 --> 00:04:19,430
‫Mas também podemos classificá-los em ordem decrescente.

82
00:04:19,430 --> 00:04:20,810
‫É muito simples.

83
00:04:20,810 --> 00:04:24,090
‫Tudo o que precisamos fazer é definir como menos aqui.

84
00:04:24,090 --> 00:04:27,200
‫Portanto, menos o preço e o Mongoose os classificará

85
00:04:27,200 --> 00:04:29,040
‫automaticamente na outra ordem.

86
00:04:29,040 --> 00:04:31,221
‫Portanto, em ordem decrescente.

87
00:04:31,221 --> 00:04:34,220
‫Então, vamos testar esse também.

88
00:04:34,220 --> 00:04:36,750
‫E agora devemos começar com, sim,

89
00:04:36,750 --> 00:04:38,150
‫exatamente, com este.

90
00:04:38,150 --> 00:04:40,190
‫Então, o primeiro agora

91
00:04:40,190 --> 00:04:43,960
‫é o mais alto e o último é o 397.

92
00:04:43,960 --> 00:04:44,930
‫Legal.

93
00:04:44,930 --> 00:04:48,030
‫Mas podemos realmente dar um passo adiante, porque

94
00:04:48,030 --> 00:04:51,500
‫temos muitos casos aqui que têm o mesmo preço.

95
00:04:51,500 --> 00:04:54,390
‫Mas como esses resultados com o mesmo preço

96
00:04:54,390 --> 00:04:56,190
‫são ordenados dentro deles?

97
00:04:56,190 --> 00:04:58,468
‫Digamos que temos este com este preço

98
00:04:58,468 --> 00:05:00,700
‫e este com o mesmo preço.

99
00:05:00,700 --> 00:05:05,330
‫Então, por que este aparece antes do segundo?

100
00:05:05,330 --> 00:05:08,050
‫A mesma coisa com este aqui, talvez,

101
00:05:08,050 --> 00:05:09,720
‫na verdade não.

102
00:05:09,720 --> 00:05:12,496
‫Portanto, este é apenas o único com 1997.

103
00:05:12,496 --> 00:05:16,650
‫Mas aqui novamente temos esses dois com o mesmo preço.

104
00:05:16,650 --> 00:05:21,563
‫Nós temos, ok, eles são todos diferentes.

105
00:05:23,360 --> 00:05:25,150
‫Ok, esses são todos diferentes.

106
00:05:25,150 --> 00:05:27,610
‫Mas queremos classificá-los, basicamente, de acordo

107
00:05:27,610 --> 00:05:29,900
‫com um segundo critério.

108
00:05:29,900 --> 00:05:31,790
‫Portanto, no caso de haver um

109
00:05:31,790 --> 00:05:33,570
‫empate, queremos um segundo campo

110
00:05:33,570 --> 00:05:36,550
‫pelo qual podemos classificar onde o primeiro é o mesmo.

111
00:05:36,550 --> 00:05:38,230
‫Portanto, neste caso, o preço.

112
00:05:38,230 --> 00:05:40,500
‫Então no Mongoose isso é bem fácil, e

113
00:05:40,500 --> 00:05:43,400
‫deixe-me mostrar isso para você aqui como um comentário, por exemplo.

114
00:05:44,450 --> 00:05:47,510
‫Então, no Mongoose, diríamos apenas sort e agora

115
00:05:49,650 --> 00:05:52,980
‫temos o preço, então o temos assim, mas

116
00:05:52,980 --> 00:05:54,430
‫no Mongoose tudo

117
00:05:54,430 --> 00:05:56,340
‫o que precisamos fazer

118
00:05:56,340 --> 00:05:59,690
‫é adicionar outro nome de campo à string.

119
00:05:59,690 --> 00:06:02,563
‫Então, por exemplo, média de classificação.

120
00:06:03,451 --> 00:06:06,130
‫Ou acho que são as classificações.

121
00:06:06,130 --> 00:06:10,460
‫Ok, agora queremos passar este campo aqui também para o

122
00:06:10,460 --> 00:06:11,363
‫nosso tipo.

123
00:06:12,640 --> 00:06:13,473
‫OK?

124
00:06:13,473 --> 00:06:15,900
‫Agora não podemos deixar um espaço aqui na URL e,

125
00:06:15,900 --> 00:06:17,933
‫em vez disso, vamos adicionar uma vírgula.

126
00:06:18,880 --> 00:06:19,713
‫OK?

127
00:06:19,713 --> 00:06:22,080
‫Portanto, queremos classificar primeiro por preço

128
00:06:22,080 --> 00:06:25,862
‫e, em seguida, como um segundo critério, também pela média de avaliações.

129
00:06:25,862 --> 00:06:26,757
‫OK?

130
00:06:26,757 --> 00:06:28,440
‫E agora tudo o

131
00:06:28,440 --> 00:06:33,060
‫que precisamos fazer é basicamente substituir essa vírgula por um espaço.

132
00:06:33,060 --> 00:06:33,893
‫Tudo bem?

133
00:06:33,893 --> 00:06:36,004
‫E, claro, poderíamos ter

134
00:06:36,004 --> 00:06:38,460
‫ainda mais campos pelos quais classificamos.

135
00:06:38,460 --> 00:06:39,293
‫OK?

136
00:06:39,293 --> 00:06:40,900
‫Mas, por enquanto, vamos

137
00:06:40,900 --> 00:06:43,813
‫deixar assim e implementar muito rapidamente em nosso código.

138
00:06:44,820 --> 00:06:45,810
‫Tudo bem?

139
00:06:45,810 --> 00:06:48,543
‫E, na verdade, deixe-me criar uma nova variável aqui.

140
00:06:49,870 --> 00:06:51,303
‫Vamos classificar por.

141
00:06:53,014 --> 00:06:57,410
‫E então temos req. inquerir. classificar e o

142
00:06:57,410 --> 00:07:01,020
‫que vamos fazer agora é dividi-lo por vírgula.

143
00:07:01,020 --> 00:07:05,867
‫Então divida a string por vírgula, e isso irá retornar um array de

144
00:07:05,867 --> 00:07:08,220
‫todas as strings, todos os nomes

145
00:07:08,220 --> 00:07:09,720
‫de campo, e

146
00:07:09,720 --> 00:07:13,060
‫então tudo o que temos a fazer é juntá-lo

147
00:07:13,060 --> 00:07:17,453
‫novamente usando join, e como string de junção usamos um espaço.

148
00:07:18,490 --> 00:07:19,980
‫Tudo bem?

149
00:07:19,980 --> 00:07:23,223
‫E apenas para ter certeza de que está correto.

150
00:07:24,280 --> 00:07:29,280
‫Console. log, classificar por e, claro,

151
00:07:29,363 --> 00:07:32,423
‫aqui queremos usar essa classificação por variável.

152
00:07:34,280 --> 00:07:35,240
‫OK?

153
00:07:35,240 --> 00:07:36,690
‫Então, vamos dar uma olhada nisso.

154
00:07:40,450 --> 00:07:41,633
‫E.

155
00:07:43,350 --> 00:07:48,350
‫Portanto, 4. 7 aqui, e o outro também tem 4. 7, certo?

156
00:07:48,990 --> 00:07:52,130
‫Então, vamos usar nossa API para alterar a

157
00:07:52,130 --> 00:07:54,360
‫média das classificações aqui.

158
00:07:54,360 --> 00:07:55,193
‫OK?

159
00:07:55,193 --> 00:07:56,740
‫Então, apenas como uma

160
00:07:56,740 --> 00:08:00,483
‫experiência divertida, vamos copiar este ID aqui, em seguida, atualizar o tour e,

161
00:08:02,060 --> 00:08:04,440
‫portanto, vamos ao corpo e, portanto, quero atualizar

162
00:08:04,440 --> 00:08:08,367
‫a média das classificações para 4. 9

163
00:08:13,465 --> 00:08:14,380
‫OK?

164
00:08:14,380 --> 00:08:18,513
‫Vamos enviar e, de fato, você verá que foi atualizado.

165
00:08:21,120 --> 00:08:22,940
‫E agora vamos mudar isso de novo, ou

166
00:08:22,940 --> 00:08:24,700
‫vamos tentar de novo, na verdade.

167
00:08:24,700 --> 00:08:27,534
‫E agora você vê que o primeiro ainda tem 4. 7 e este

168
00:08:27,534 --> 00:08:30,510
‫aqui agora tem 4. 9

169
00:08:30,510 --> 00:08:34,476
‫E agora eles são ordenados com uma classificação crescente.

170
00:08:34,476 --> 00:08:35,600
‫Direito?

171
00:08:35,600 --> 00:08:38,335
‫E, claro, poderíamos colocar um menos aqui

172
00:08:38,335 --> 00:08:41,653
‫e então eles deveriam mudar de posição, o que

173
00:08:41,653 --> 00:08:45,970
‫significa que aquele com 4. 9 deve aparecer primeiro.

174
00:08:45,970 --> 00:08:47,960
‫Vamos tentar isso também.

175
00:08:47,960 --> 00:08:50,590
‫E sim, de fato.

176
00:08:50,590 --> 00:08:53,010
‫Então agora este, o tour dos amantes do

177
00:08:53,010 --> 00:08:55,230
‫esporte, é o que aparece primeiro.

178
00:08:55,230 --> 00:08:56,710
‫Certo, ótimo.

179
00:08:56,710 --> 00:08:58,800
‫Parece que está funcionando.

180
00:08:58,800 --> 00:09:01,270
‫Vamos dar uma olhada em nossos resultados aqui.

181
00:09:01,270 --> 00:09:02,670
‫E sim, de fato.

182
00:09:02,670 --> 00:09:04,970
‫E vamos apenas dar uma olhada no que

183
00:09:04,970 --> 00:09:06,190
‫registramos aqui no console.

184
00:09:06,190 --> 00:09:10,453
‫E então, sim, este é o nosso tipo por variável, que sim.

185
00:09:11,790 --> 00:09:14,718
‫Que tipo de parece semelhante ao que temos aqui.

186
00:09:14,718 --> 00:09:17,560
‫E então esse foi o objetivo de criar essa variável.

187
00:09:17,560 --> 00:09:19,410
‫Ótimo, agora está funcionando.

188
00:09:19,410 --> 00:09:23,263
‫Vamos nos livrar deste console e deste aqui também.

189
00:09:24,430 --> 00:09:26,180
‫E tudo bem.

190
00:09:26,180 --> 00:09:27,140
‫E só

191
00:09:27,140 --> 00:09:29,910
‫para terminar, vamos adicionar um padrão.

192
00:09:29,910 --> 00:09:33,565
‫E fazemos isso simplesmente adicionando um bloco else aqui.

193
00:09:33,565 --> 00:09:36,580
‫Portanto, caso o usuário não especifique nenhum campo

194
00:09:36,580 --> 00:09:39,770
‫de classificação na string de consulta da URL, ainda

195
00:09:39,770 --> 00:09:42,583
‫assim iremos adicionar uma classificação à consulta.

196
00:09:43,850 --> 00:09:47,300
‫Portanto, consulte. classificar e então

197
00:09:47,300 --> 00:09:49,990
‫classificaremos pelo campo de adição criado, certo?

198
00:09:49,990 --> 00:09:51,830
‫E, na verdade, em ordem

199
00:09:51,830 --> 00:09:54,330
‫decrescente, para que os mais novos apareçam primeiro.

200
00:09:54,330 --> 00:09:59,070
‫Então, menos criado em.

201
00:09:59,070 --> 00:10:00,050
‫Tudo bem?

202
00:10:00,050 --> 00:10:01,730
‫Dê uma chance a isso.

203
00:10:01,730 --> 00:10:05,240
‫E então sim, eu penso assim, terminamos.

204
00:10:05,240 --> 00:10:09,140
‫Vamos apenas desligar essa opção aqui também.

205
00:10:09,140 --> 00:10:12,503
‫E agora estamos de volta ao nosso URL normal, sem

206
00:10:13,390 --> 00:10:15,100
‫nenhuma string de consulta.

207
00:10:15,100 --> 00:10:16,570
‫E então vamos dar

208
00:10:16,570 --> 00:10:19,780
‫uma olhada se isso agora está realmente ordenado pelo criado em.

209
00:10:19,780 --> 00:10:22,713
‫Portanto, este aqui termina em 59 segundos e 30.

210
00:10:23,730 --> 00:10:25,230
‫5930 também.

211
00:10:25,230 --> 00:10:27,363
‫E sim.

212
00:10:27,363 --> 00:10:29,670
‫Então, eles foram criados exatamente

213
00:10:29,670 --> 00:10:32,990
‫no mesmo momento, porque importamos todos ao mesmo tempo.

214
00:10:32,990 --> 00:10:33,823
‫Tudo bem?

215
00:10:33,823 --> 00:10:36,250
‫E, portanto, neste caso, não podemos realmente ver

216
00:10:36,250 --> 00:10:38,920
‫o efeito desse trecho de código que acabamos

217
00:10:38,920 --> 00:10:41,810
‫de adicionar aqui, mas no caso de esses documentos terem

218
00:10:41,810 --> 00:10:44,130
‫sido adicionados em momentos diferentes, eles

219
00:10:44,130 --> 00:10:46,901
‫agora seriam ordenados pela data em que foram criados.

220
00:10:46,901 --> 00:10:48,430
‫Tudo bem?

221
00:10:48,430 --> 00:10:50,450
‫Então é isso para classificação.

222
00:10:50,450 --> 00:10:53,320
‫A seguir, vamos falar sobre como limitar os campos que

223
00:10:53,320 --> 00:10:54,763
‫queremos em nossos resultados.

