﻿1
00:00:01,210 --> 00:00:03,670
‫Palestrante: Agora vamos continuar trabalhando em nossa API.

2
00:00:04,530 --> 00:00:06,620
‫Nos próximos vídeos, implementaremos

3
00:00:06,620 --> 00:00:08,840
‫alguns recursos comuns da API

4
00:00:08,840 --> 00:00:12,440
‫que tornam uma API mais fácil e mais agradável

5
00:00:12,440 --> 00:00:14,950
‫de usar para quem a usará.

6
00:00:14,950 --> 00:00:15,940
‫E nesta

7
00:00:15,940 --> 00:00:17,963
‫palestra, vamos começar com a filtragem.

8
00:00:19,340 --> 00:00:22,830
‫Então, novamente, o primeiro recurso que vamos implementar é permitir

9
00:00:22,830 --> 00:00:26,000
‫que o usuário basicamente filtre os dados usando uma

10
00:00:26,000 --> 00:00:27,563
‫string de consulta.

11
00:00:28,890 --> 00:00:32,233
‫Deixe-me apenas dizer o que uma string de consulta está usando o Postman.

12
00:00:36,610 --> 00:00:39,993
‫Então, vamos fechar todos esses caras.

13
00:00:46,150 --> 00:00:47,683
‫Tudo bem.

14
00:00:47,683 --> 00:00:50,350
‫Na verdade, onde a filtragem fará sentido é aqui

15
00:00:50,350 --> 00:00:52,793
‫nesta rota para obter todos os passeios.

16
00:00:53,750 --> 00:00:55,940
‫Pois, é esse que, assim como

17
00:00:55,940 --> 00:00:58,720
‫o nome diz, fica com todos os passeios.

18
00:00:58,720 --> 00:01:02,370
‫E aqui, queremos permitir que o usuário filtre os dados, de modo

19
00:01:02,370 --> 00:01:04,840
‫que, em vez de obter todos os

20
00:01:04,840 --> 00:01:08,123
‫dados, ele obtenha apenas os dados que correspondem ao filtro.

21
00:01:09,340 --> 00:01:12,290
‫Assim, podemos basicamente permitir que o usuário consulte os

22
00:01:12,290 --> 00:01:14,750
‫dados de uma forma muito fácil.

23
00:01:14,750 --> 00:01:16,480
‫Novamente, usando a string de consulta.

24
00:01:16,480 --> 00:01:18,850
‫E a string de consulta se parece um pouco com isso.

25
00:01:18,850 --> 00:01:20,340
‫E tenho certeza que você viu.

26
00:01:20,340 --> 00:01:23,120
‫Portanto, começamos com um ponto de interrogação e,

27
00:01:23,120 --> 00:01:26,663
‫em seguida, podemos simplesmente especificar alguns pares de valores de campo.

28
00:01:28,420 --> 00:01:30,360
‫Então, digamos que

29
00:01:30,360 --> 00:01:33,620
‫quiséssemos filtrar por uma duração igual a cinco

30
00:01:33,620 --> 00:01:36,573
‫e ao mesmo tempo, uma dificuldade fácil.

31
00:01:40,500 --> 00:01:44,690
‫Portanto, podemos simplesmente construir uma string de consulta como esta.

32
00:01:44,690 --> 00:01:46,860
‫Então, novamente, ele começa com este

33
00:01:46,860 --> 00:01:48,800
‫ponto de interrogação, e então

34
00:01:48,800 --> 00:01:51,723
‫podemos especificar quantos pares de valores-chave usando este formato.

35
00:01:53,000 --> 00:01:54,860
‫E agora nosso aplicativo

36
00:01:54,860 --> 00:01:57,450
‫Postman aqui realmente reconhece isso e

37
00:01:57,450 --> 00:02:00,420
‫basicamente analisa essa string aqui e coloca

38
00:02:00,420 --> 00:02:04,140
‫a chave e os valores aqui nesta guia Params.

39
00:02:04,140 --> 00:02:06,963
‫Portanto, também podemos especificar a chave e os valores aqui.

40
00:02:07,890 --> 00:02:11,110
‫Então, digamos que teste, defina-o para vinte e três, e você

41
00:02:11,110 --> 00:02:12,690
‫verá aqui que ele realmente

42
00:02:12,690 --> 00:02:14,483
‫o adicionou à string de consulta.

43
00:02:15,370 --> 00:02:18,740
‫Essa é uma maneira muito legal do Postman nos ajudar aqui.

44
00:02:18,740 --> 00:02:21,150
‫Porque agora podemos, por exemplo, enquanto estamos

45
00:02:21,150 --> 00:02:24,260
‫fazendo testes, podemos ligar e desligar isso e você verá

46
00:02:24,260 --> 00:02:25,610
‫que a string

47
00:02:25,610 --> 00:02:27,573
‫de consulta aqui reage de acordo.

48
00:02:28,970 --> 00:02:32,940
‫De qualquer forma, agora precisamos de uma forma de acessar esses dados que estão

49
00:02:32,940 --> 00:02:35,883
‫em uma string de consulta, em nosso aplicativo Express.

50
00:02:36,730 --> 00:02:39,210
‫Mas, felizmente para nós, isso é

51
00:02:39,210 --> 00:02:42,260
‫muito fácil, porque o Express já cuidou disso.

52
00:02:42,260 --> 00:02:44,690
‫Portanto, essa é apenas uma das muitas

53
00:02:44,690 --> 00:02:48,420
‫coisas que o Express faz por nós para realmente tornar o

54
00:02:48,420 --> 00:02:50,563
‫desenvolvimento do NodeJS muito mais rápido.

55
00:02:52,420 --> 00:02:55,170
‫Então, deixe-me mostrar a você aqui, na verdade, no console.

56
00:02:57,810 --> 00:03:01,380
‫Portanto, esses dados estão em uma solicitação, o que faz

57
00:03:01,380 --> 00:03:04,013
‫sentido, e em um campo chamado consulta.

58
00:03:04,980 --> 00:03:07,490
‫Portanto, a consulta de ponto de solicitação deve

59
00:03:07,490 --> 00:03:10,630
‫nos fornecer um objeto bem formatado com os dados da

60
00:03:10,630 --> 00:03:11,730
‫string de consulta.

61
00:03:12,760 --> 00:03:13,593
‫Dê uma chance.

62
00:03:14,530 --> 00:03:16,630
‫E observe como eu realmente

63
00:03:16,630 --> 00:03:20,150
‫o adicionei à função de manipulador get all tours.

64
00:03:20,150 --> 00:03:22,800
‫Então, novamente, fazemos esse tipo de filtragem na

65
00:03:22,800 --> 00:03:25,323
‫rota onde queremos obter todos os passeios.

66
00:03:27,140 --> 00:03:30,373
‫Vamos testar agora com esta string de consulta exata.

67
00:03:31,400 --> 00:03:32,920
‫Enviou o pedido.

68
00:03:32,920 --> 00:03:36,333
‫E voltando, aqui temos o objeto.

69
00:03:37,170 --> 00:03:40,420
‫Na verdade, vamos tornar isso aqui maior para que

70
00:03:40,420 --> 00:03:41,720
‫você possa ver.

71
00:03:41,720 --> 00:03:43,650
‫Isso realmente não está funcionando.

72
00:03:43,650 --> 00:03:45,820
‫Às vezes, sei que algumas pessoas não conseguem

73
00:03:45,820 --> 00:03:47,630
‫ver a parte inferior da tela.

74
00:03:47,630 --> 00:03:49,080
‫Deixe-me fazer de novo aqui.

75
00:03:51,280 --> 00:03:52,942
‫E então, vamos lá.

76
00:03:52,942 --> 00:03:55,990
‫Temos o objeto, que tem a duração definida em cinco

77
00:03:55,990 --> 00:03:58,200
‫e a dificuldade definida como fácil.

78
00:03:58,200 --> 00:04:00,460
‫E então você vê que o

79
00:04:00,460 --> 00:04:04,250
‫Express, muito bem, analisou essa string neste objeto fácil de usar.

80
00:04:04,250 --> 00:04:06,330
‫Agora, uma coisa que notei aqui é que

81
00:04:06,330 --> 00:04:08,380
‫na verdade estamos perdendo o log

82
00:04:08,380 --> 00:04:10,440
‫que tínhamos mais fácil aqui no console.

83
00:04:10,440 --> 00:04:12,540
‫Vamos ver por que isso está acontecendo.

84
00:04:15,431 --> 00:04:18,430
‫Portanto, por algum motivo, agora temos o aplicativo antes

85
00:04:18,430 --> 00:04:21,310
‫de realmente lermos a variável de ambiente.

86
00:04:21,310 --> 00:04:24,113
‫Dessa forma, o aplicativo não terá acesso a eles.

87
00:04:25,010 --> 00:04:27,600
‫Eu pensei que já tinha corrigido isso antes, mas por algum

88
00:04:27,600 --> 00:04:29,300
‫motivo ele está de volta agora.

89
00:04:30,340 --> 00:04:32,390
‫Dê outro save aqui.

90
00:04:32,390 --> 00:04:33,690
‫E vou tentar de novo.

91
00:04:36,180 --> 00:04:38,933
‫Agora, recuperamos nosso registro.

92
00:04:40,200 --> 00:04:43,750
‫Uma solicitação get para este URL e, em seguida, com

93
00:04:43,750 --> 00:04:45,963
‫o restante dos dados aqui.

94
00:04:48,260 --> 00:04:50,600
‫De qualquer forma, vamos agora

95
00:04:50,600 --> 00:04:53,200
‫usar esses dados para implementar nossa filtragem.

96
00:04:53,200 --> 00:04:55,840
‫Mas antes de fazermos isso, preciso dizer que

97
00:04:55,840 --> 00:04:58,440
‫no Mongoose, existem duas maneiras de escrever consultas

98
00:04:58,440 --> 00:05:00,120
‫de banco de dados.

99
00:05:00,120 --> 00:05:03,050
‫O primeiro é usar apenas o objeto

100
00:05:03,050 --> 00:05:06,490
‫de filtro, como fizemos na seção de introdução do MongoDB.

101
00:05:06,490 --> 00:05:08,690
‫Direito? Lembre-se disso?

102
00:05:08,690 --> 00:05:12,333
‫A segunda maneira é usar alguns métodos especiais do Mongoose.

103
00:05:13,590 --> 00:05:16,505
‫Deixe-me, muito rapidamente, mostrar isso a você.

104
00:05:16,505 --> 00:05:19,420
‫Com o objeto de filtro, faríamos assim.

105
00:05:19,420 --> 00:05:21,910
‫Começamos com a descoberta aqui, e então podemos

106
00:05:21,910 --> 00:05:23,570
‫passar um objeto de filtro.

107
00:05:23,570 --> 00:05:25,900
‫E eu já mencionei isso antes.

108
00:05:25,900 --> 00:05:28,410
‫Novamente, funciona exatamente da mesma maneira

109
00:05:28,410 --> 00:05:30,650
‫que uma consulta MongoDB normal.

110
00:05:30,650 --> 00:05:33,160
‫Podemos agora dizer que a duração

111
00:05:34,570 --> 00:05:35,657
‫é cinco.

112
00:05:35,657 --> 00:05:36,663
‫E

113
00:05:39,320 --> 00:05:42,253
‫então, dificuldade, defina como fácil.

114
00:05:44,300 --> 00:05:47,150
‫Essa é exatamente a string de consulta que tínhamos antes,

115
00:05:47,150 --> 00:05:48,960
‫e agora estou codificando-a aqui apenas

116
00:05:48,960 --> 00:05:50,860
‫para mostrar as duas maneiras diferentes de

117
00:05:50,860 --> 00:05:52,423
‫escrever consultas no Mongoose.

118
00:05:53,318 --> 00:05:54,518
‫Vamos testar esse aqui.

119
00:05:58,220 --> 00:06:00,453
‫Você vê agora, só obtemos dois resultados.

120
00:06:01,290 --> 00:06:03,193
‫Vamos nos dar um pouco de espaço aqui.

121
00:06:04,810 --> 00:06:05,760
‫Tudo bem.

122
00:06:05,760 --> 00:06:08,870
‫Vemos os dois resultados e, de fato,

123
00:06:08,870 --> 00:06:10,890
‫ambos têm uma

124
00:06:10,890 --> 00:06:15,890
‫duração de cinco, então aqui e aqui, e ambos são fáceis.

125
00:06:15,930 --> 00:06:17,443
‫Fácil e fácil.

126
00:06:18,350 --> 00:06:20,563
‫Portanto, nosso filtro funcionou bem.

127
00:06:21,675 --> 00:06:24,710
‫Essa é a primeira maneira de escrever uma consulta.

128
00:06:24,710 --> 00:06:27,650
‫Do jeito normal que já estamos acostumados, mas

129
00:06:27,650 --> 00:06:29,103
‫tem outro jeito.

130
00:06:30,790 --> 00:06:32,993
‫Deixe-me mostrar isso a você também.

131
00:06:37,570 --> 00:06:39,910
‫Novamente, começamos exatamente da mesma maneira, mas

132
00:06:39,910 --> 00:06:41,690
‫a diferença é que

133
00:06:41,690 --> 00:06:44,150
‫começamos a encadear algum método especial do Mongoose

134
00:06:44,150 --> 00:06:47,523
‫para basicamente construir a consulta semelhante a esta que temos.

135
00:06:49,540 --> 00:06:50,563
‫Então dizemos,

136
00:06:51,730 --> 00:06:52,563
‫onde

137
00:06:54,910 --> 00:06:55,780
‫a duração

138
00:06:58,840 --> 00:07:00,343
‫é igual a cinco.

139
00:07:01,810 --> 00:07:03,630
‫Então também, onde a

140
00:07:04,710 --> 00:07:06,180
‫dificuldade, que precisa

141
00:07:06,180 --> 00:07:08,023
‫estar entre aspas, é

142
00:07:11,420 --> 00:07:12,253
‫igual a

143
00:07:13,170 --> 00:07:14,003
‫fácil.

144
00:07:17,270 --> 00:07:19,620
‫Esta consulta aqui será exatamente

145
00:07:19,620 --> 00:07:22,500
‫igual a esta, mas, novamente, escrita usando

146
00:07:22,500 --> 00:07:24,740
‫métodos especiais do Mongoose.

147
00:07:24,740 --> 00:07:27,240
‫E, claro, existem muitos outros métodos.

148
00:07:27,240 --> 00:07:30,980
‫Por exemplo, em vez de iguais, podemos ter menos que, ou igual,

149
00:07:30,980 --> 00:07:34,060
‫ou apenas menos que, ou você também pode classificar os

150
00:07:34,060 --> 00:07:37,520
‫resultados ou limitar o número de resultados e, na verdade, todos

151
00:07:37,520 --> 00:07:39,020
‫os tipos de coisas.

152
00:07:41,057 --> 00:07:43,180
‫Com certeza, vamos usar alguns deles

153
00:07:43,180 --> 00:07:44,743
‫nos próximos vídeos.

154
00:07:46,050 --> 00:07:48,290
‫Isso pode parecer um pouco estranho para

155
00:07:48,290 --> 00:07:51,303
‫você, mas na verdade é muito, muito útil em alguns casos.

156
00:07:52,530 --> 00:07:55,573
‫Apenas para testar, tente novamente com este.

157
00:07:57,010 --> 00:07:59,953
‫E, de fato, obtemos nossos mesmos dois resultados.

158
00:08:02,735 --> 00:08:04,590
‫Agora, deixe-me comentar este aqui.

159
00:08:04,590 --> 00:08:06,950
‫Vou deixar aqui apenas como

160
00:08:06,950 --> 00:08:10,300
‫referência, porque agora vamos usar esse método aqui.

161
00:08:10,300 --> 00:08:12,400
‫E vamos usá-lo, porque, na

162
00:08:12,400 --> 00:08:15,000
‫verdade, já temos um objeto muito parecido

163
00:08:15,000 --> 00:08:16,363
‫com este.

164
00:08:17,360 --> 00:08:20,300
‫E essa é a consulta de ponto de solicitação.

165
00:08:20,300 --> 00:08:22,193
‫Se você comparar, este objeto, a

166
00:08:23,228 --> 00:08:25,128
‫este objeto que você vê aqui embaixo,

167
00:08:26,280 --> 00:08:28,173
‫parece exatamente o mesmo que este.

168
00:08:30,120 --> 00:08:32,130
‫Para implementar um filtro muito

169
00:08:32,130 --> 00:08:37,130
‫simples, tudo o que temos que fazer neste caso é dizer, req dot query.

170
00:08:37,150 --> 00:08:38,793
‫Vamos tentar mais uma vez.

171
00:08:39,730 --> 00:08:40,803
‫Livre-se disso aqui.

172
00:08:42,650 --> 00:08:46,300
‫E, de fato, obtemos exatamente os mesmos dois resultados.

173
00:08:46,300 --> 00:08:50,223
‫Agora vamos tentar apenas com dificuldade definida como fácil.

174
00:08:52,140 --> 00:08:53,993
‫Agora temos quatro resultados.

175
00:08:55,280 --> 00:08:56,700
‫Todos eles, é claro,

176
00:08:56,700 --> 00:08:58,463
‫terão a dificuldade definida como fácil.

177
00:09:00,540 --> 00:09:03,100
‫Nosso filtro, nosso filtro básico, agora

178
00:09:03,100 --> 00:09:04,880
‫está realmente funcionando.

179
00:09:04,880 --> 00:09:06,870
‫Agora, o problema com essa

180
00:09:06,870 --> 00:09:09,650
‫implementação é que, na verdade, é muito simples.

181
00:09:09,650 --> 00:09:11,690
‫Isso porque, mais tarde, teremos

182
00:09:11,690 --> 00:09:13,370
‫outros parâmetros de consulta.

183
00:09:13,370 --> 00:09:16,730
‫Por exemplo, classificar, para funcionalidade de classificação,

184
00:09:16,730 --> 00:09:18,653
‫ou página, para paginação.

185
00:09:19,610 --> 00:09:21,040
‫Precisamos ter certeza de

186
00:09:21,040 --> 00:09:24,180
‫que não estamos fazendo consultas em nosso banco de dados.

187
00:09:24,180 --> 00:09:25,883
‫Por exemplo, se

188
00:09:27,360 --> 00:09:29,893
‫adicionarmos aqui, página, igual a dois,

189
00:09:30,970 --> 00:09:33,993
‫então, é claro, não obteríamos nenhum resultado.

190
00:09:35,130 --> 00:09:36,300
‫Deixe-me mostrar isso para você.

191
00:09:36,300 --> 00:09:38,280
‫E, de fato, não obtemos nenhum

192
00:09:38,280 --> 00:09:40,560
‫resultado, porque não há nenhum documento nesta coleção

193
00:09:40,560 --> 00:09:42,593
‫em que a página seja definida como dois.

194
00:09:43,480 --> 00:09:46,200
‫Queremos apenas usar este parâmetro aqui, ou este

195
00:09:46,200 --> 00:09:49,170
‫campo, página, para implementar a paginação e não para

196
00:09:49,170 --> 00:09:51,593
‫realmente consultar o banco de dados.

197
00:09:53,450 --> 00:09:54,870
‫Portanto, o que teremos

198
00:09:54,870 --> 00:09:57,810
‫que fazer é excluir basicamente esses nomes de campo especiais

199
00:09:57,810 --> 00:10:00,883
‫de nossa string de consulta antes de realmente fazer a filtragem.

200
00:10:02,680 --> 00:10:05,540
‫Vamos agora implementar isso.

201
00:10:05,540 --> 00:10:08,200
‫O que faremos é, primeiro, criar

202
00:10:08,200 --> 00:10:12,333
‫uma cópia superficial do objeto de consulta de ponto de solicitação.

203
00:10:15,690 --> 00:10:17,670
‫Vamos chamá-lo de objeto de consulta.

204
00:10:17,670 --> 00:10:20,030
‫Aqui precisamos, realmente, de uma cópia impressa.

205
00:10:20,030 --> 00:10:23,560
‫Não podemos simplesmente fazer, request dot query, porque

206
00:10:23,560 --> 00:10:25,570
‫então, se você excluir

207
00:10:25,570 --> 00:10:28,030
‫algo deste objeto, também o

208
00:10:28,030 --> 00:10:30,700
‫excluiremos do objeto req dot query.

209
00:10:30,700 --> 00:10:32,170
‫E isso porque

210
00:10:32,170 --> 00:10:35,260
‫em JavaScript, quando definimos uma variável para outro objeto,

211
00:10:35,260 --> 00:10:37,490
‫essa nova variável será basicamente apenas

212
00:10:37,490 --> 00:10:39,683
‫uma referência a esse objeto original.

213
00:10:41,030 --> 00:10:43,770
‫Então, realmente precisamos de uma cópia impressa aqui.

214
00:10:43,770 --> 00:10:46,310
‫Em JavaScript, não há realmente uma maneira

215
00:10:46,310 --> 00:10:49,020
‫embutida de fazer isso, mas um truque muito

216
00:10:49,020 --> 00:10:53,520
‫bom que podemos usar, desde o ES6, é usar, primeiro, a estrutura que

217
00:10:53,520 --> 00:10:55,960
‫usamos usando ponto ponto ponto.

218
00:10:55,960 --> 00:10:58,270
‫E então podemos simplesmente criar um novo

219
00:10:58,270 --> 00:10:59,663
‫objeto a partir disso.

220
00:11:01,290 --> 00:11:02,123
‫Bem assim.

221
00:11:03,260 --> 00:11:05,420
‫Essa estruturação aqui, esses três

222
00:11:05,420 --> 00:11:08,683
‫pontos, basicamente tirará todos os campos do objeto.

223
00:11:09,860 --> 00:11:11,810
‫Aqui, com as chaves,

224
00:11:11,810 --> 00:11:13,990
‫bem, simplesmente criamos um novo objeto.

225
00:11:13,990 --> 00:11:15,940
‫Portanto, temos um novo objeto que

226
00:11:15,940 --> 00:11:18,070
‫basicamente conterá todos os pares de valores-chave

227
00:11:18,070 --> 00:11:21,053
‫que estavam em nosso objeto de consulta de ponto req.

228
00:11:23,020 --> 00:11:24,330
‫Então essa é uma cópia.

229
00:11:24,330 --> 00:11:26,450
‫Agora vamos criar um array

230
00:11:26,450 --> 00:11:28,633
‫de todos os campos que queremos excluir.

231
00:11:31,610 --> 00:11:34,040
‫Estou chamando aquele de campos excluídos.

232
00:11:34,040 --> 00:11:37,090
‫E então queremos excluir a página, então essa

233
00:11:37,090 --> 00:11:38,400
‫é a que

234
00:11:38,400 --> 00:11:40,250
‫eu disse antes no Postman.

235
00:11:40,250 --> 00:11:42,150
‫Então, também queremos excluir

236
00:11:43,170 --> 00:11:44,440
‫a classificação,

237
00:11:44,440 --> 00:11:46,053
‫queremos excluir o

238
00:11:47,890 --> 00:11:50,533
‫limite e queremos excluir os campos.

239
00:11:52,160 --> 00:11:54,940
‫Implementaremos todas as funcionalidades de paginação,

240
00:11:54,940 --> 00:11:58,210
‫classificação, limitação e seleção de apenas alguns

241
00:11:58,210 --> 00:12:01,140
‫campos específicos, mais tarde nos próximos

242
00:12:01,140 --> 00:12:02,690
‫dois vídeos.

243
00:12:03,750 --> 00:12:05,900
‫Em seguida, o que precisamos fazer

244
00:12:05,900 --> 00:12:08,610
‫é basicamente remover todos esses campos de nosso

245
00:12:08,610 --> 00:12:10,230
‫objeto de consulta.

246
00:12:10,230 --> 00:12:11,690
‫E para fazer isso,

247
00:12:11,690 --> 00:12:13,523
‫faremos um loop sobre esses campos.

248
00:12:14,660 --> 00:12:15,860
‫Portanto, campos

249
00:12:17,690 --> 00:12:19,070
‫excluídos para cada um.

250
00:12:19,070 --> 00:12:20,390
‫E estamos usando para cada

251
00:12:20,390 --> 00:12:22,423
‫um porque não queremos salvar um novo array.

252
00:12:24,150 --> 00:12:25,840
‫Então, para cada um desses

253
00:12:25,840 --> 00:12:27,863
‫elementos, podemos usar o operador delete.

254
00:12:30,930 --> 00:12:32,530
‫E então, do objeto

255
00:12:32,530 --> 00:12:34,730
‫de consulta, queremos deletar o campo

256
00:12:34,730 --> 00:12:36,700
‫com o nome do elemento,

257
00:12:36,700 --> 00:12:38,820
‫portanto, o elemento atual na matriz.

258
00:12:38,820 --> 00:12:42,340
‫Assim, primeiro deletaremos o campo da página, depois a

259
00:12:42,340 --> 00:12:45,563
‫classificação, o limite e depois os campos.

260
00:12:46,560 --> 00:12:48,440
‫Claro, apenas no caso de ele estar lá.

261
00:12:48,440 --> 00:12:50,860
‫Se não houver, por exemplo, campo sem

262
00:12:50,860 --> 00:12:54,030
‫limite, então, é claro, ele não será excluído, porque não

263
00:12:54,030 --> 00:12:55,130
‫está lá.

264
00:12:56,530 --> 00:12:59,233
‫Vamos agora dar uma olhada se isso realmente funciona.

265
00:13:00,380 --> 00:13:02,530
‫Vou registrar a consulta req dot

266
00:13:02,530 --> 00:13:05,723
‫e, ao mesmo tempo, o nosso objeto de consulta.

267
00:13:08,742 --> 00:13:09,692
‫Dando uma chance a isso.

268
00:13:10,600 --> 00:13:12,060
‫Não se preocupe com nossos resultados agora.

269
00:13:12,060 --> 00:13:14,190
‫Só quero dar uma olhada em

270
00:13:14,190 --> 00:13:17,080
‫nosso objeto de consulta, apenas para ter certeza de

271
00:13:17,080 --> 00:13:19,530
‫que essa lógica que temos aqui realmente funciona.

272
00:13:21,540 --> 00:13:26,540
‫Vamos adicionar aqui uma espécie de um e um limite de 10.

273
00:13:27,260 --> 00:13:29,210
‫Isso fará mais sentido mais tarde.

274
00:13:29,210 --> 00:13:30,540
‫Por enquanto, estou

275
00:13:30,540 --> 00:13:32,293
‫apenas adicionando-os, para depois poder excluí-los.

276
00:13:34,490 --> 00:13:37,120
‫Os resultados não importam, tudo o que importa,

277
00:13:37,120 --> 00:13:40,640
‫é que nossa consulta original é este aqui, e então nosso

278
00:13:40,640 --> 00:13:42,820
‫objeto de consulta, que é o

279
00:13:42,820 --> 00:13:44,010
‫que vamos

280
00:13:44,010 --> 00:13:46,320
‫usar, só tem dificuldade definida como fácil.

281
00:13:46,320 --> 00:13:49,723
‫Isso porque excluímos, paginamos, classificamos e limitamos.

282
00:13:51,000 --> 00:13:53,460
‫Isso agora funciona, então, em vez de

283
00:13:53,460 --> 00:13:57,033
‫usar a consulta de ponto req, vamos usar nosso objeto de consulta.

284
00:13:59,390 --> 00:14:03,000
‫Vamos nos livrar disso e tentar novamente.

285
00:14:03,000 --> 00:14:05,080
‫Agora devemos voltar a

286
00:14:05,080 --> 00:14:07,180
‫consultar todos os documentos que

287
00:14:07,180 --> 00:14:11,473
‫apresentam dificuldade definida como fácil e ignorar todos esses outros campos.

288
00:14:13,256 --> 00:14:14,150
‫Envie isso.

289
00:14:14,150 --> 00:14:15,930
‫E, de fato, estamos de

290
00:14:15,930 --> 00:14:18,623
‫volta aos nossos quatro resultados que tínhamos antes.

291
00:14:19,900 --> 00:14:22,610
‫Também podemos ativar a duração e, de

292
00:14:22,610 --> 00:14:24,743
‫fato, agora teremos dois resultados.

293
00:14:26,110 --> 00:14:27,180
‫Lembre-se disso?

294
00:14:27,180 --> 00:14:28,643
‫E se desligarmos isso, bem,

295
00:14:29,960 --> 00:14:32,380
‫então é claro que vai funcionar da mesma forma.

296
00:14:32,380 --> 00:14:34,330
‫Vamos apenas deletar esta linha vazia aqui.

297
00:14:36,740 --> 00:14:40,340
‫E então, de fato, com nossa string de consulta original, as

298
00:14:40,340 --> 00:14:42,693
‫coisas obviamente também funcionavam da mesma forma.

299
00:14:44,220 --> 00:14:47,630
‫Preparamos nosso recurso de filtro para que

300
00:14:47,630 --> 00:14:51,410
‫ele ignore os campos de página, classificação e limite.

301
00:14:51,410 --> 00:14:53,450
‫Mas, na verdade, há algo

302
00:14:53,450 --> 00:14:56,210
‫mais que precisamos fazer em nosso código, a fim

303
00:14:56,210 --> 00:14:59,753
‫de basicamente sermos capazes de implementar esses recursos em vídeos futuros.

304
00:15:01,360 --> 00:15:03,250
‫Vamos voltar aqui ao nosso código.

305
00:15:03,250 --> 00:15:04,570
‫Portanto, agora vamos aprender

306
00:15:04,570 --> 00:15:07,093
‫um pouco sobre como as consultas realmente funcionam no Mongoose.

307
00:15:08,220 --> 00:15:09,910
‫Acho que mencionei isso

308
00:15:09,910 --> 00:15:13,400
‫antes, mas é muito importante falar sobre isso novamente.

309
00:15:13,400 --> 00:15:16,943
‫Este método de localização aqui irá retornar uma consulta.

310
00:15:18,060 --> 00:15:20,430
‫Tudo isso aqui retornará uma consulta.

311
00:15:20,430 --> 00:15:22,410
‫E é por isso

312
00:15:22,410 --> 00:15:24,840
‫que podemos encadear outros métodos como este.

313
00:15:24,840 --> 00:15:28,630
‫Como onde, é igual a e todos esses outros métodos

314
00:15:28,630 --> 00:15:30,770
‫que falei com você antes.

315
00:15:30,770 --> 00:15:33,770
‫Deixe-me mostrar isso para você na documentação novamente.

316
00:15:37,670 --> 00:15:40,170
‫Aqui temos o objeto de

317
00:15:40,170 --> 00:15:42,710
‫consulta e, novamente, quando usarmos o

318
00:15:42,710 --> 00:15:46,590
‫método find, ele retornará um objeto que é uma consulta.

319
00:15:46,590 --> 00:15:48,310
‫Portanto, no protótipo de ponto

320
00:15:48,310 --> 00:15:50,180
‫de consulta, temos todos esses métodos.

321
00:15:50,180 --> 00:15:52,820
‫Por exemplo, aqui temos onde, que acabei

322
00:15:52,820 --> 00:15:54,040
‫de mencionar.

323
00:15:54,040 --> 00:15:55,790
‫Temos classificar qual é

324
00:15:55,790 --> 00:15:58,120
‫o que usaríamos mais tarde para classificar.

325
00:15:58,120 --> 00:16:00,870
‫Temos, vamos ver, temos menos

326
00:16:00,870 --> 00:16:03,740
‫ou menos que igual, temos maior.

327
00:16:03,740 --> 00:16:05,260
‫Nós temos...

328
00:16:05,260 --> 00:16:06,700
‫O que mais usamos?

329
00:16:06,700 --> 00:16:08,070
‫Usamos iguais.

330
00:16:08,070 --> 00:16:11,310
‫Todos eles fazem parte do protótipo de ponto de consulta.

331
00:16:11,310 --> 00:16:13,920
‫Que, novamente, se refere a objetos

332
00:16:13,920 --> 00:16:16,783
‫que estamos criando usando a classe de consulta.

333
00:16:19,613 --> 00:16:21,410
‫Novamente, esta é a razão

334
00:16:21,410 --> 00:16:24,070
‫pela qual podemos fazer esse tipo de encadeamento.

335
00:16:24,070 --> 00:16:26,290
‫Agora vem a parte importante.

336
00:16:26,290 --> 00:16:28,350
‫Assim que realmente aguardamos

337
00:16:28,350 --> 00:16:30,970
‫o resultado da consulta, assim como

338
00:16:30,970 --> 00:16:33,950
‫usamos await aqui ou aqui, por exemplo.

339
00:16:33,950 --> 00:16:35,890
‫Assim que usarmos o await,

340
00:16:35,890 --> 00:16:37,910
‫a consulta será executada e

341
00:16:37,910 --> 00:16:39,610
‫retornará com os

342
00:16:39,610 --> 00:16:42,144
‫documentos que realmente correspondem à nossa consulta.

343
00:16:42,144 --> 00:16:44,960
‫Se fizermos assim, como temos aqui, agora há

344
00:16:44,960 --> 00:16:46,730
‫uma maneira de, mais tarde,

345
00:16:46,730 --> 00:16:49,110
‫implementar a classificação ou paginação, ou todos

346
00:16:49,110 --> 00:16:50,793
‫esses outros recursos.

347
00:16:51,880 --> 00:16:53,870
‫Em vez disso, o que

348
00:16:53,870 --> 00:16:57,220
‫teremos que fazer, é salvar esta parte aqui em uma

349
00:16:57,220 --> 00:17:00,200
‫consulta, então no final, assim que mudarmos todos os

350
00:17:00,200 --> 00:17:02,440
‫métodos para a consulta que precisamos, só

351
00:17:02,440 --> 00:17:04,863
‫então no final, podemos esperar que inquerir.

352
00:17:06,080 --> 00:17:08,600
‫Por exemplo, vamos usar o método de classificação.

353
00:17:08,600 --> 00:17:10,200
‫Vamos usar o método

354
00:17:10,200 --> 00:17:12,440
‫de previsão, vamos usar o método de limite

355
00:17:12,440 --> 00:17:14,500
‫e vamos usar, na verdade, um monte

356
00:17:14,500 --> 00:17:16,620
‫de métodos e encadea-los a esta consulta.

357
00:17:16,620 --> 00:17:18,110
‫Isso seria impossível

358
00:17:18,110 --> 00:17:20,910
‫de fazer, novamente, se aguardarmos o resultado

359
00:17:20,910 --> 00:17:23,073
‫dessa consulta inicial aqui, de imediato.

360
00:17:24,590 --> 00:17:26,470
‫Espero que tenha feito sentido.

361
00:17:26,470 --> 00:17:28,660
‫A forma como o faremos

362
00:17:28,660 --> 00:17:30,140
‫é através

363
00:17:31,090 --> 00:17:33,473
‫dos nossos tours por aqui.

364
00:17:35,540 --> 00:17:37,623
‫E isso vai aguardar a consulta.

365
00:17:41,310 --> 00:17:43,830
‫A consulta é, bem, simplesmente a

366
00:17:43,830 --> 00:17:45,533
‫consulta sem qualquer espera.

367
00:17:47,460 --> 00:17:49,360
‫Apenas para torná-lo consistente com esta

368
00:17:49,360 --> 00:17:50,363
‫parte aqui,

369
00:17:52,060 --> 00:17:53,163
‫vamos fazer assim.

370
00:17:55,603 --> 00:17:57,123
‫Digamos que,

371
00:17:58,540 --> 00:18:00,437
‫primeiro, construamos a consulta

372
00:18:00,437 --> 00:18:03,363
‫e, em seguida, executemos a consulta.

373
00:18:07,290 --> 00:18:08,313
‫Isso não é correto.

374
00:18:11,490 --> 00:18:13,040
‫Já que estamos fazendo

375
00:18:13,040 --> 00:18:14,330
‫comentários aqui,

376
00:18:15,300 --> 00:18:16,790
‫digamos também enviar resposta.

377
00:18:16,790 --> 00:18:20,023
‫Apenas para tornar nosso código um pouco mais fácil de digitalizar.

378
00:18:20,870 --> 00:18:22,380
‫Espero que

379
00:18:22,380 --> 00:18:24,820
‫tudo isso faça sentido, acabou sendo

380
00:18:24,820 --> 00:18:26,780
‫um vídeo bem longo,

381
00:18:26,780 --> 00:18:29,356
‫mas foi importante terminar essa parte

382
00:18:29,356 --> 00:18:31,830
‫aqui explicando essa lógica aqui, para

383
00:18:31,830 --> 00:18:34,080
‫que nos próximos vídeos possamos

384
00:18:34,080 --> 00:18:36,110
‫implementar o resto dos recursos.

385
00:18:36,110 --> 00:18:37,940
‫Porque, de novo,

386
00:18:37,940 --> 00:18:39,983
‫sem ter assim, não funcionaria.

