﻿1
00:00:01,300 --> 00:00:03,180
‫Instrutor: Lembra-se de como temos

2
00:00:03,180 --> 00:00:06,500
‫um campo para a classificação média em cada documento turístico?

3
00:00:06,500 --> 00:00:09,860
‫Bem, até este ponto, esse campo não contém

4
00:00:09,860 --> 00:00:12,110
‫nenhum dado significativo, certo?

5
00:00:12,110 --> 00:00:14,290
‫Mas agora vamos realmente mudar

6
00:00:14,290 --> 00:00:17,233
‫isso e calcular as classificações médias nesta aula.

7
00:00:18,920 --> 00:00:22,410
‫Portanto, armazenar um resumo de um conjunto de dados

8
00:00:22,410 --> 00:00:26,270
‫relacionado no conjunto de dados principal é, na verdade, uma técnica

9
00:00:26,270 --> 00:00:29,900
‫muito popular em modelagem de dados que ainda não mencionei.

10
00:00:29,900 --> 00:00:32,720
‫E essa técnica pode ser realmente útil

11
00:00:32,720 --> 00:00:34,750
‫para evitar consultas constantes

12
00:00:34,750 --> 00:00:36,890
‫do conjunto de dados relacionado.

13
00:00:36,890 --> 00:00:40,110
‫Portanto, em nosso aplicativo, um ótimo exemplo dessa técnica

14
00:00:40,110 --> 00:00:43,320
‫é armazenar a avaliação média e o número de

15
00:00:43,320 --> 00:00:46,870
‫avaliações em cada passeio, para que não tenhamos que consultar

16
00:00:46,870 --> 00:00:49,860
‫as avaliações e calcular essa média cada vez

17
00:00:49,860 --> 00:00:52,150
‫que consultarmos todos os passeios, OK.

18
00:00:52,150 --> 00:00:54,380
‫Por exemplo, isso pode ser muito

19
00:00:54,380 --> 00:00:57,280
‫útil para uma página de visão geral do passeio

20
00:00:57,280 --> 00:01:00,320
‫em nosso front-end, onde realmente não queremos exibir todos

21
00:01:00,320 --> 00:01:03,350
‫os comentários, mas ainda queremos mostrar um resumo desses

22
00:01:03,350 --> 00:01:06,730
‫comentários, como por exemplo, o número de avaliações e a média.

23
00:01:06,730 --> 00:01:09,130
‫E, na verdade, já temos os campos para isso em

24
00:01:09,130 --> 00:01:10,433
‫nosso esquema de passeio.

25
00:01:11,450 --> 00:01:15,870
‫Bem aqui no começo, eu acho.

26
00:01:15,870 --> 00:01:17,660
‫Sim, temos a média

27
00:01:17,660 --> 00:01:19,760
‫e a quantidade de avaliações

28
00:01:19,760 --> 00:01:22,380
‫aqui, mas agora eles são apenas alguns

29
00:01:22,380 --> 00:01:25,307
‫números e, claro, não são a média real

30
00:01:25,307 --> 00:01:27,560
‫e o número de avaliações, porque

31
00:01:27,560 --> 00:01:30,840
‫nunca realmente calculamos isso em qualquer ponto do nosso

32
00:01:30,840 --> 00:01:34,290
‫aplicativo, mas é exatamente isso que vamos mudar neste vídeo.

33
00:01:34,290 --> 00:01:37,370
‫Portanto, agora vamos calcular a classificação média e também

34
00:01:37,370 --> 00:01:39,750
‫o número de classificações de um passeio

35
00:01:39,750 --> 00:01:43,330
‫cada vez que uma nova avaliação é adicionada a esse

36
00:01:43,330 --> 00:01:47,000
‫passeio ou também quando uma avaliação é atualizada ou excluída, porque

37
00:01:47,000 --> 00:01:49,230
‫essas são exatamente as situações

38
00:01:49,230 --> 00:01:52,830
‫em que o número ou a média pode mudar, certo.

39
00:01:52,830 --> 00:01:55,920
‫Então, como vamos realmente implementar isso?

40
00:01:55,920 --> 00:01:58,800
‫Bem, de volta aqui no modelo de avaliação,

41
00:01:58,800 --> 00:02:00,620
‫vamos criar uma nova

42
00:02:00,620 --> 00:02:02,690
‫função que pegará um ID de

43
00:02:02,690 --> 00:02:05,690
‫passeio e calculará a avaliação média e o número

44
00:02:05,690 --> 00:02:09,410
‫de avaliações que existem em nossa coleção para aquele passeio exato.

45
00:02:09,410 --> 00:02:11,880
‫Então, no final, a função irá até mesmo

46
00:02:11,880 --> 00:02:14,020
‫atualizar o documento de tour correspondente.

47
00:02:14,020 --> 00:02:16,360
‫Então, para usar essa função, usaremos

48
00:02:16,360 --> 00:02:19,510
‫o middleware para basicamente chamar essa função toda vez

49
00:02:19,510 --> 00:02:22,650
‫que houver uma nova revisão ou uma for

50
00:02:22,650 --> 00:02:24,980
‫atualizada ou excluída, tudo bem.

51
00:02:24,980 --> 00:02:28,030
‫Então, vamos começar escrevendo essa função e,

52
00:02:28,030 --> 00:02:31,370
‫para isso, vamos escrever um método estático em nosso

53
00:02:31,370 --> 00:02:34,510
‫esquema, e esse é um recurso do Mongoose

54
00:02:34,510 --> 00:02:36,580
‫que ainda não usamos.

55
00:02:36,580 --> 00:02:38,630
‫Portanto, usamos apenas o método de

56
00:02:38,630 --> 00:02:40,500
‫instância, que podemos chamar em

57
00:02:40,500 --> 00:02:42,050
‫documentos e também

58
00:02:42,050 --> 00:02:46,090
‫são muito úteis, mas desta vez vamos realmente usar métodos estáticos.

59
00:02:46,090 --> 00:02:46,923
‫OK.

60
00:02:47,850 --> 00:02:51,330
‫Portanto, novamente, eles podem ser chamados diretamente no modelo, por

61
00:02:51,330 --> 00:02:59,520
‫exemplo, como nesta revisão. calcStats, ok.

62
00:02:59,520 --> 00:03:04,350
‫E a forma como isso funciona é, claro, revisar

63
00:03:04,350 --> 00:03:09,323
‫o esquema e então. estática e, em seguida, o nome da função.

64
00:03:10,490 --> 00:03:11,540
‫Portanto, calcA AverageRatings

65
00:03:18,360 --> 00:03:22,143
‫é igual a uma função, que se lembra de pegar um tour

66
00:03:24,800 --> 00:03:27,180
‫ID, e esse ID é claro para

67
00:03:27,180 --> 00:03:29,670
‫o tour ao qual a revisão atual pertence.

68
00:03:29,670 --> 00:03:32,790
‫E eu sei que neste ponto tudo parece

69
00:03:32,790 --> 00:03:35,000
‫meio confuso, mas não se preocupe,

70
00:03:35,000 --> 00:03:36,720
‫uma vez que tenhamos tudo

71
00:03:36,720 --> 00:03:38,380
‫isso implementado e

72
00:03:38,380 --> 00:03:42,080
‫também quando estivermos testando, fará muito sentido na prática, ok?

73
00:03:42,080 --> 00:03:45,120
‫De qualquer forma, para agora fazer o

74
00:03:45,120 --> 00:03:48,470
‫cálculo, vamos usar novamente o pipeline de agregação, certo.

75
00:03:48,470 --> 00:03:53,470
‫Então, vamos lembrar disso em nosso controlador de ferramenta, então, bem

76
00:03:53,970 --> 00:03:56,990
‫aqui, usamos o pipeline de agregação

77
00:03:56,990 --> 00:04:00,730
‫para também criar algumas estatísticas como esta, ok.

78
00:04:00,730 --> 00:04:04,560
‫Então usamos o método agregado, que chamamos diretamente

79
00:04:04,560 --> 00:04:06,670
‫no modelo, ok.

80
00:04:06,670 --> 00:04:09,080
‫Portanto, agora, em nosso método de instância, podemos fazer

81
00:04:09,080 --> 00:04:10,393
‫exatamente a mesma coisa.

82
00:04:12,140 --> 00:04:15,690
‫Portanto, em um método estático como este, essas palavras-chave na

83
00:04:15,690 --> 00:04:18,130
‫verdade apontam para o modelo atual.

84
00:04:18,130 --> 00:04:20,623
‫É por isso que podemos usar isso. agregado, porque lembre-se

85
00:04:22,160 --> 00:04:25,100
‫de que precisamos chamar isso. agregar no modelo

86
00:04:25,100 --> 00:04:27,470
‫diretamente, e é exatamente por isso

87
00:04:27,470 --> 00:04:30,970
‫que estamos usando um método estático aqui em primeiro lugar.

88
00:04:30,970 --> 00:04:33,690
‫Porque, novamente, agora aponta para o

89
00:04:33,690 --> 00:04:38,200
‫modelo e precisamos chamar o agregado sempre no modelo, ok.

90
00:04:38,200 --> 00:04:41,610
‫Então, no agregado, precisamos passar em uma

91
00:04:41,610 --> 00:04:45,850
‫matriz de todos os estágios que queremos agregados, ok.

92
00:04:45,850 --> 00:04:47,930
‫Então, o que queremos fazer primeiro?

93
00:04:47,930 --> 00:04:51,930
‫Bem, a primeira etapa deve ser selecionar todas as avaliações

94
00:04:51,930 --> 00:04:54,280
‫que realmente pertencem ao tour

95
00:04:54,280 --> 00:04:57,470
‫atual que foi transmitido como o argumento.

96
00:04:57,470 --> 00:04:58,790
‫OK.

97
00:04:58,790 --> 00:05:02,093
‫Portanto, nosso primeiro estágio é um estágio de correspondência, lembre-se

98
00:05:03,090 --> 00:05:03,933
‫disso,

99
00:05:05,360 --> 00:05:07,580
‫e aqui passamos nosso objeto de

100
00:05:08,620 --> 00:05:11,420
‫filtro e podemos dizer passeio igual a passeio,

101
00:05:11,420 --> 00:05:13,740
‫mas realmente não precisamos disso, como

102
00:05:13,740 --> 00:05:17,950
‫você já sabe, então vamos apenas remover isso parte, ou na verdade apenas

103
00:05:17,950 --> 00:05:20,670
‫para torná-lo um pouco menos confuso aqui com

104
00:05:20,670 --> 00:05:24,290
‫os nomes, vamos chamar este aqui de ID de tour, ok.

105
00:05:24,290 --> 00:05:26,620
‫Então visite aqui,

106
00:05:26,620 --> 00:05:27,480
‫ok.

107
00:05:27,480 --> 00:05:29,510
‫Assim, selecionamos apenas

108
00:05:29,510 --> 00:05:33,330
‫um tour que realmente queremos atualizar, ok.

109
00:05:33,330 --> 00:05:35,740
‫Agora, na próxima fase, vamos calcular

110
00:05:35,740 --> 00:05:37,930
‫as estatísticas eles próprios

111
00:05:37,930 --> 00:05:41,033
‫e, para isso, usamos uma fase de grupos.

112
00:05:42,920 --> 00:05:44,900
‫E na fase de grupo, lembre-se

113
00:05:44,900 --> 00:05:49,900
‫de que o primeiro campo que precisamos especificar é o ID, portanto, _id e, em seguida,

114
00:05:50,240 --> 00:05:51,740
‫o campo comum que

115
00:05:51,740 --> 00:05:53,570
‫todos os documentos têm em comum

116
00:05:53,570 --> 00:05:56,200
‫pelo qual desejamos agrupar e, portanto, esse será

117
00:05:56,200 --> 00:05:57,543
‫novamente o passeio.

118
00:06:00,230 --> 00:06:04,460
‫Assim como em nosso exemplo de cálculo de

119
00:06:04,460 --> 00:06:07,310
‫estatística anterior, agrupamos por dificuldade.

120
00:06:07,310 --> 00:06:10,250
‫Assim, calculamos as estatísticas para fácil e

121
00:06:10,250 --> 00:06:11,840
‫estatísticas para médias

122
00:06:11,840 --> 00:06:14,560
‫e, em seguida, estatísticas para passeios difíceis.

123
00:06:14,560 --> 00:06:17,140
‫Portanto, neste exemplo, agrupamos todos os

124
00:06:17,140 --> 00:06:18,453
‫passeios por dificuldade,

125
00:06:19,450 --> 00:06:20,283
‫certo.

126
00:06:20,283 --> 00:06:22,810
‫Mas aqui, é claro, estamos agrupando todos os tours

127
00:06:22,810 --> 00:06:23,663
‫por tour.

128
00:06:25,440 --> 00:06:26,273
‫Excelente.

129
00:06:26,273 --> 00:06:28,023
‫Agora, o número de avaliações, lembre-se

130
00:06:31,290 --> 00:06:32,653
‫de como fazemos

131
00:06:33,690 --> 00:06:35,970
‫isso, então tudo o que fazemos é basicamente

132
00:06:35,970 --> 00:06:37,970
‫adicionar um para cada turnê que

133
00:06:37,970 --> 00:06:41,570
‫temos, então, cada turnê que foi correspondida na etapa anterior, tudo bem.

134
00:06:41,570 --> 00:06:44,810
‫Portanto, se houver cinco documentos de revisão para o

135
00:06:44,810 --> 00:06:48,310
‫tour atual, será adicionado um para cada um desses documentos.

136
00:06:48,310 --> 00:06:51,310
‫Então, no final, o número de avaliações será

137
00:06:51,310 --> 00:06:55,130
‫cinco, e novamente, porque é claro que temos cinco documentos de revisão.

138
00:06:55,130 --> 00:06:57,083
‫Então isso faz sentido, certo?

139
00:06:58,532 --> 00:07:03,532
‫Depois também a avaliação média, que assim como antes usamos o

140
00:07:03,970 --> 00:07:08,970
‫operador médio e isso precisa estar dentro de um objeto

141
00:07:09,180 --> 00:07:10,013
‫e

142
00:07:12,490 --> 00:07:14,440
‫aqui o nome do

143
00:07:15,470 --> 00:07:18,330
‫campo que é a avaliação, certo.

144
00:07:18,330 --> 00:07:22,180
‫Portanto, lembre-se de que cada avaliação tem um campo de avaliação.

145
00:07:22,180 --> 00:07:24,993
‫Então é daí que queremos calcular a média.

146
00:07:27,720 --> 00:07:30,350
‫Ok, e é isso mesmo.

147
00:07:30,350 --> 00:07:32,950
‫Portanto, o número e a média

148
00:07:32,950 --> 00:07:36,790
‫das avaliações é exatamente o que queríamos calcular nesta agregação.

149
00:07:36,790 --> 00:07:39,740
‫Agora, lembre-se de que isso realmente retorna

150
00:07:39,740 --> 00:07:43,290
‫uma promessa e, portanto, precisamos aguardar isso e

151
00:07:43,290 --> 00:07:46,193
‫armazená-lo em uma variável chamada estatísticas.

152
00:07:49,070 --> 00:07:49,980
‫OK.

153
00:07:49,980 --> 00:07:53,023
‫Em seguida, marque este aqui também

154
00:07:54,600 --> 00:07:55,620
‫como assíncrono,

155
00:07:55,620 --> 00:07:59,790
‫salve-o e agora precisamos usar essa variável de estatísticas.

156
00:07:59,790 --> 00:08:02,930
‫Por enquanto, tudo o que realmente quero fazer

157
00:08:02,930 --> 00:08:06,073
‫apenas para testar isso é registrar as estatísticas no console.

158
00:08:08,120 --> 00:08:09,090
‫Console. estatísticas

159
00:08:10,600 --> 00:08:11,433
‫de registro.

160
00:08:13,640 --> 00:08:16,880
‫Ok, então, na etapa posterior, vamos realmente querer, como

161
00:08:16,880 --> 00:08:19,950
‫mencionei antes, atualizar o documento de tour com essas

162
00:08:19,950 --> 00:08:21,770
‫estatísticas, mas vou deixar

163
00:08:21,770 --> 00:08:23,930
‫isso um pouco mais tarde, porque

164
00:08:23,930 --> 00:08:26,070
‫por enquanto precisamos chamar esse

165
00:08:26,070 --> 00:08:28,390
‫método aqui em algum lugar , porque

166
00:08:28,390 --> 00:08:31,133
‫caso contrário, as estatísticas aqui nunca serão chamadas.

167
00:08:32,100 --> 00:08:33,863
‫E lembre-se de como dissemos

168
00:08:33,863 --> 00:08:36,160
‫no início que faríamos isso usando middleware

169
00:08:36,160 --> 00:08:38,523
‫cada vez que uma nova revisão fosse criada.

170
00:08:40,050 --> 00:08:44,250
‫Então, vamos implementar isso usando reviewSchema pré-salvamento e, em

171
00:08:45,330 --> 00:08:46,163
‫seguida,

172
00:08:50,680 --> 00:08:54,563
‫apenas nossa função normal de middleware aqui.

173
00:08:55,860 --> 00:08:57,873
‫E lembre-se que neste tipo

174
00:08:57,873 --> 00:09:00,093
‫de middleware essa palavra-chave aponta para o

175
00:09:00,093 --> 00:09:02,210
‫documento que está sendo salvo no momento.

176
00:09:02,210 --> 00:09:04,760
‫Então, isso aponta para a

177
00:09:06,540 --> 00:09:08,850
‫revisão atual, ok.

178
00:09:08,850 --> 00:09:11,880
‫Então, vamos querer chamar a função calcA

179
00:09:11,880 --> 00:09:15,020
‫takingRating usando isso. tour, certo.

180
00:09:15,020 --> 00:09:18,770
‫Agora, como vamos realmente chamar essa função?

181
00:09:18,770 --> 00:09:19,940
‫Lembre-se de como

182
00:09:19,940 --> 00:09:22,470
‫falei que esta função está disponível no modelo.

183
00:09:22,470 --> 00:09:25,050
‫Então, basicamente como esta revisão

184
00:09:25,050 --> 00:09:27,390
‫colocar. calcA AverageRatings e,

185
00:09:29,557 --> 00:09:35,173
‫como eu disse, queremos usar isso. tour, ok.

186
00:09:35,173 --> 00:09:37,240
‫E novamente, porque esta é a

187
00:09:37,240 --> 00:09:40,340
‫revisão atual e este é o ID do tour que

188
00:09:40,340 --> 00:09:42,143
‫passaremos dentro de calcA BudapRatings.

189
00:09:43,640 --> 00:09:46,950
‫Agora, o problema é que, neste ponto aqui no código,

190
00:09:46,950 --> 00:09:50,200
‫a variável de revisão ainda não foi definida.

191
00:09:50,200 --> 00:09:53,340
‫Agora você pode pensar que a solução simples

192
00:09:53,340 --> 00:09:57,780
‫seria simplesmente mover este código aqui após esta declaração de revisão, mas infelizmente

193
00:09:57,780 --> 00:10:00,480
‫isso não vai funcionar, porque assim como

194
00:10:00,480 --> 00:10:03,630
‫no Express, este código aqui basicamente é executado na

195
00:10:03,630 --> 00:10:05,730
‫sequência em que é declarado.

196
00:10:05,730 --> 00:10:08,100
‫Então, se colocássemos este código aqui

197
00:10:08,100 --> 00:10:11,550
‫após a declaração de revisão, então este reviewSchema aqui

198
00:10:11,550 --> 00:10:13,810
‫não conteria este middleware, porque então

199
00:10:13,810 --> 00:10:16,050
‫apenas o declararíamos depois que

200
00:10:16,050 --> 00:10:19,750
‫o modelo de revisão já foi criado, ok, mas felizmente

201
00:10:19,750 --> 00:10:23,160
‫ainda há uma maneira de contornar isso e isso

202
00:10:23,160 --> 00:10:26,273
‫é usar isso. construtor.

203
00:10:28,970 --> 00:10:31,640
‫Então, isso aqui ainda aponta para o modelo.

204
00:10:31,640 --> 00:10:35,267
‫Você sabe, basicamente, novamente, este é o documento atual

205
00:10:35,267 --> 00:10:38,030
‫e o construtor é basicamente o

206
00:10:38,030 --> 00:10:40,470
‫modelo que criou o documento.

207
00:10:40,470 --> 00:10:42,410
‫Então, isso aqui representa

208
00:10:42,410 --> 00:10:45,823
‫o tour e então podemos simplesmente fazer assim.

209
00:10:47,420 --> 00:10:52,043
‫Em seguida, chame o próximo como sempre e é isso.

210
00:10:54,130 --> 00:10:57,320
‫Portanto, vamos agora testar isso.

211
00:10:57,320 --> 00:11:00,500
‫E para isso vou criar um novo passeio primeiro,

212
00:11:00,500 --> 00:11:02,670
‫porque os outros que já temos

213
00:11:02,670 --> 00:11:04,620
‫têm a média e o

214
00:11:04,620 --> 00:11:06,730
‫número de classificações já calculados e

215
00:11:06,730 --> 00:11:10,240
‫por isso queremos mesmo começar do zero aqui ao testar isto.

216
00:11:10,240 --> 00:11:13,270
‫Então, para criar um novo tour, precisamos estar logados

217
00:11:13,270 --> 00:11:16,840
‫como administradores, e acho que estamos atualmente, mas apenas para ter

218
00:11:16,840 --> 00:11:18,940
‫certeza, vamos fazer isso de novo.

219
00:11:20,400 --> 00:11:21,233
‫OK.

220
00:11:22,660 --> 00:11:24,981
‫Portanto, este é o novo tour de teste.

221
00:11:24,981 --> 00:11:28,313
‫Tudo bem, vamos remover isso aqui, eles não são obrigatórios,

222
00:11:30,120 --> 00:11:32,663
‫e acho que estamos prontos para prosseguir.

223
00:11:36,950 --> 00:11:40,580
‫Certo, e aqui você vê os padrões que definimos antes,

224
00:11:40,580 --> 00:11:43,130
‫para que as avaliações sejam em

225
00:11:43,130 --> 00:11:46,430
‫média cinco e a quantidade definida como zero, certo.

226
00:11:46,430 --> 00:11:49,630
‫Agora, para criar uma nova revisão, na verdade

227
00:11:49,630 --> 00:11:52,560
‫precisamos estar logados como um usuário regular, não

228
00:11:52,560 --> 00:11:54,033
‫como um administrador.

229
00:11:54,900 --> 00:11:58,900
‫Então, vamos pegar um usuário normal, digamos.

230
00:11:58,900 --> 00:12:02,120
‫Então, vamos usar essa Laura aqui.

231
00:12:02,120 --> 00:12:03,470
‫Então, Laura @ exemplo. com

232
00:12:04,804 --> 00:12:08,063
‫e como mencionei anteriormente a senha é sempre a mesma.

233
00:12:12,000 --> 00:12:16,773
‫Então vamos fazer isso e agora vamos criar uma nova revisão na turnê.

234
00:12:17,920 --> 00:12:21,103
‫Agora vamos pegar o tour que criamos

235
00:12:22,890 --> 00:12:26,653
‫anteriormente, colocar esse ID e colocá-lo aqui na URL.

236
00:12:27,880 --> 00:12:30,490
‫Ok, então lembre-se de que esta rota

237
00:12:30,490 --> 00:12:33,877
‫agora obtém automaticamente uma ID de tour da URL

238
00:12:33,877 --> 00:12:37,413
‫e uma ID de usuário do usuário conectado no momento,

239
00:12:38,730 --> 00:12:39,563
‫ok.

240
00:12:39,563 --> 00:12:42,063
‫Então, vamos usar este como a primeira

241
00:12:44,490 --> 00:12:48,643
‫avaliação, vamos enviá-lo, e agora quero dar uma olhada em nosso console.

242
00:12:50,060 --> 00:12:53,230
‫Temos uma saída aqui, mas por algum motivo é

243
00:12:53,230 --> 00:12:55,260
‫apenas como este array vazio.

244
00:12:55,260 --> 00:12:58,010
‫Portanto, algo não deve estar funcionando aqui.

245
00:12:58,010 --> 00:13:02,400
‫Então, vamos dar uma olhada no tour ID aqui apenas para

246
00:13:02,400 --> 00:13:07,200
‫ter certeza de que estamos obtendo o valor correto aqui, ID e

247
00:13:07,200 --> 00:13:09,340
‫também vamos comentar esta parte

248
00:13:10,210 --> 00:13:14,220
‫aqui apenas para ver se talvez haja algum erro nesta

249
00:13:14,220 --> 00:13:17,360
‫parte, então vamos tentar agora isso de novo.

250
00:13:17,360 --> 00:13:20,113
‫Vou simplesmente adicionar o mesmo aqui novamente, ok.

251
00:13:23,680 --> 00:13:26,453
‫Ok, agora realmente temos algo.

252
00:13:27,310 --> 00:13:29,790
‫Portanto, temos esta análise

253
00:13:29,790 --> 00:13:32,210
‫que criamos inicialmente.

254
00:13:32,210 --> 00:13:34,900
‫Então, começa com este ac15,

255
00:13:34,900 --> 00:13:39,623
‫mas o que acabei de criar é este 66d, ok.

256
00:13:39,623 --> 00:13:44,223
‫Então, vamos dar uma olhada nisso aqui no Compass.

257
00:13:45,490 --> 00:13:47,223
‫Portanto, precisamos ir para a última página.

258
00:13:49,380 --> 00:13:52,450
‫Ok, então o que aparece em nosso console

259
00:13:52,450 --> 00:13:55,270
‫é apenas este aqui, mas não o

260
00:13:55,270 --> 00:13:57,730
‫segundo que acabamos de criar, ok.

261
00:13:57,730 --> 00:13:59,670
‫Portanto, se agora criarmos

262
00:13:59,670 --> 00:14:02,980
‫um terceiro, provavelmente veremos o primeiro e o segundo.

263
00:14:02,980 --> 00:14:03,880
‫Então, vamos tentar isso.

264
00:14:12,060 --> 00:14:13,160
‫OK.

265
00:14:13,160 --> 00:14:16,290
‫Envie este e agora aqui em nossa saída,

266
00:14:18,060 --> 00:14:20,830
‫na verdade recebo todos os três.

267
00:14:20,830 --> 00:14:23,793
‫Então isso não faz muito sentido, mas de qualquer

268
00:14:24,800 --> 00:14:27,443
‫maneira o ponto que eu queria enfatizar aqui

269
00:14:27,443 --> 00:14:29,700
‫é que não devemos usar o

270
00:14:29,700 --> 00:14:33,560
‫pre, mas em vez disso, devemos usar o middleware post save, ok.

271
00:14:33,560 --> 00:14:35,520
‫E isso porque na pré-gravação,

272
00:14:35,520 --> 00:14:37,350
‫a revisão atual ainda

273
00:14:37,350 --> 00:14:39,270
‫não está realmente na coleção.

274
00:14:39,270 --> 00:14:42,420
‫Portanto, quando fazemos essa correspondência aqui, ela não

275
00:14:42,420 --> 00:14:45,170
‫deve ser capaz de aparecer na saída

276
00:14:45,170 --> 00:14:47,150
‫aqui, porque, novamente, neste

277
00:14:47,150 --> 00:14:51,000
‫momento, ela ainda não está realmente salva na coleção, ok.

278
00:14:51,000 --> 00:14:52,760
‫Então é melhor usar post

279
00:14:52,760 --> 00:14:54,770
‫aqui, porque naquele momento, é claro, todos

280
00:14:54,770 --> 00:14:57,820
‫os documentos já estão salvos no banco de dados e

281
00:14:57,820 --> 00:14:59,330
‫então é um ótimo

282
00:14:59,330 --> 00:15:02,430
‫momento para realmente fazer esse cálculo com todas as revisões

283
00:15:02,430 --> 00:15:04,723
‫e então armazenar o resultado no tour .

284
00:15:05,940 --> 00:15:07,750
‫Ok, então não tenho

285
00:15:07,750 --> 00:15:10,403
‫certeza de por que este aqui realmente apareceu

286
00:15:11,670 --> 00:15:15,603
‫neste ponto, mas de qualquer maneira, vamos tentar agora com outro.

287
00:15:19,290 --> 00:15:21,280
‫Esse é o quarto, e

288
00:15:21,280 --> 00:15:25,450
‫agora o próximo não é uma função e, de fato,

289
00:15:25,450 --> 00:15:27,930
‫como mencionei antes, o post middleware

290
00:15:27,930 --> 00:15:30,250
‫não tem acesso ao próximo e,

291
00:15:30,250 --> 00:15:33,940
‫portanto, é claro que não podemos chamá-lo, não podemos

292
00:15:33,940 --> 00:15:34,833
‫usá-lo.

293
00:15:37,070 --> 00:15:40,793
‫Tudo bem, então aqui temos nossa próxima classificação,

294
00:15:42,160 --> 00:15:42,993
‫ok.

295
00:15:42,993 --> 00:15:45,913
‫Portanto, agora também aparece aqui.

296
00:15:48,090 --> 00:15:50,840
‫Portanto, não precisamos disso e agora podemos tentar

297
00:15:50,840 --> 00:15:53,053
‫calcular nossas estatísticas com segurança aqui.

298
00:15:54,140 --> 00:15:56,600
‫Salve e, na verdade, vamos

299
00:15:56,600 --> 00:15:59,000
‫excluir todos esses comentários.

300
00:15:59,000 --> 00:16:03,623
‫Então, basicamente, quero começar do zero, certo.

301
00:16:04,880 --> 00:16:05,800
‫Portanto, todos

302
00:16:08,320 --> 00:16:11,190
‫esses cinco comentários aqui devem ir e

303
00:16:16,300 --> 00:16:18,450
‫agora estamos prontos para ir.

304
00:16:18,450 --> 00:16:21,030
‫Então, vamos realmente criar este como o primeiro e

305
00:16:22,860 --> 00:16:26,400
‫agora vamos em frente e dar uma olhada em nossas estatísticas e

306
00:16:26,400 --> 00:16:27,600
‫lá vamos nós.

307
00:16:27,600 --> 00:16:29,530
‫Portanto, este é o ID

308
00:16:29,530 --> 00:16:31,670
‫do tour atual, o número de avaliações é

309
00:16:31,670 --> 00:16:33,703
‫um e a média é, claro, três.

310
00:16:35,510 --> 00:16:39,240
‫Portanto, se adicionarmos outro com a classificação de cinco poços, a

311
00:16:40,920 --> 00:16:43,310
‫média deve ser quatro e devemos

312
00:16:43,310 --> 00:16:46,010
‫ter o número de classificações igual a dois.

313
00:16:47,840 --> 00:16:52,460
‫Então, vamos tentar isso e, de fato, como eu disse,

314
00:16:52,460 --> 00:16:55,480
‫duas avaliações, média de quatro.

315
00:16:55,480 --> 00:16:59,010
‫E só mais um só para ter certeza, vamos

316
00:16:59,010 --> 00:17:00,610
‫adicionar outro com

317
00:17:05,600 --> 00:17:07,240
‫cinco, e aí vamos nós.

318
00:17:07,240 --> 00:17:08,073
‫Excelente.

319
00:17:08,073 --> 00:17:10,990
‫Portanto, agora estamos calculando as estatísticas corretamente, mas é

320
00:17:10,990 --> 00:17:13,090
‫claro que elas ainda não estão

321
00:17:13,090 --> 00:17:15,290
‫sendo persistidas no documento de turnê atual.

322
00:17:15,290 --> 00:17:18,630
‫Então, se viermos aqui no Compass para o passeio

323
00:17:18,630 --> 00:17:20,293
‫que acabamos de criar,

324
00:17:22,330 --> 00:17:24,340
‫provavelmente é o último aqui.

325
00:17:24,340 --> 00:17:27,790
‫Sim, então nosso tour de teste ainda tem esses valores

326
00:17:27,790 --> 00:17:30,470
‫padrão de 4. 5 e zero,

327
00:17:30,470 --> 00:17:31,350
‫ok.

328
00:17:31,350 --> 00:17:33,260
‫Então agora é hora de

329
00:17:33,260 --> 00:17:36,573
‫realmente persistir as estatísticas calculadas neste documento de

330
00:17:38,250 --> 00:17:39,480
‫passeio, certo.

331
00:17:39,480 --> 00:17:41,670
‫E então vamos fazer isso.

332
00:17:41,670 --> 00:17:44,420
‫Em primeiro lugar, para poder fazer

333
00:17:44,420 --> 00:17:47,863
‫isso temos que exigir o modelo de tour, certo.

334
00:17:48,810 --> 00:17:49,643
‫Portanto, a

335
00:17:51,620 --> 00:17:52,453
‫excursão exige

336
00:17:55,250 --> 00:17:56,483
‫e lá vamos nós.

337
00:18:03,860 --> 00:18:07,010
‫Então, o que precisamos fazer é basicamente

338
00:18:07,010 --> 00:18:10,160
‫encontrar o tour atual e atualizá-lo.

339
00:18:10,160 --> 00:18:13,873
‫Então já fizemos isso muitas vezes,

340
00:18:14,830 --> 00:18:16,980
‫findById e atualizar,

341
00:18:16,980 --> 00:18:17,813
‫ok.

342
00:18:17,813 --> 00:18:21,370
‫E o ID é, obviamente, o ID do tour que

343
00:18:21,370 --> 00:18:23,670
‫foi passado para a função e,

344
00:18:23,670 --> 00:18:27,140
‫em seguida, um objeto dos dados que realmente queremos atualizar.

345
00:18:27,140 --> 00:18:30,470
‫Então, vamos obter esses nomes de campo a partir daqui.

346
00:18:30,470 --> 00:18:32,500
‫Portanto, temos ratingsQuantity por

347
00:18:34,970 --> 00:18:36,230
‫um lado.

348
00:18:36,230 --> 00:18:39,260
‫Vamos colocá-lo aqui em um, por enquanto, para

349
00:18:39,260 --> 00:18:41,240
‫não obtermos um erro e

350
00:18:41,240 --> 00:18:42,893
‫a média das avaliações.

351
00:18:46,910 --> 00:18:48,940
‫Novamente, para evitar erros, pois

352
00:18:48,940 --> 00:18:50,650
‫agora quero vir

353
00:18:50,650 --> 00:18:53,400
‫aqui dar uma olhada nessas estatísticas.

354
00:18:53,400 --> 00:18:57,700
‫Então você vê que eles estão armazenados em um array, certo.

355
00:18:57,700 --> 00:19:00,870
‫Portanto, precisamos ir para a primeira posição desse array, que é

356
00:19:00,870 --> 00:19:02,433
‫onde este objeto está.

357
00:19:04,520 --> 00:19:07,060
‫Estatísticas na posição zero e,

358
00:19:07,970 --> 00:19:12,820
‫a partir daí, obtemos a propriedade de classificação final,

359
00:19:12,820 --> 00:19:13,653
‫certo.

360
00:19:13,653 --> 00:19:14,593
‫Então, este aqui.

361
00:19:18,440 --> 00:19:21,283
‫E, claro, o mesmo para a classificação média.

362
00:19:23,870 --> 00:19:24,800
‫OK.

363
00:19:24,800 --> 00:19:27,070
‫E agora também precisamos aguardar.

364
00:19:27,070 --> 00:19:31,640
‫Então, como sempre, isso retorna uma premissa e podemos aguardar.

365
00:19:31,640 --> 00:19:34,750
‫Agora também poderíamos armazenar o resultado disso em uma

366
00:19:34,750 --> 00:19:37,250
‫variável, mas realmente não precisamos do passeio.

367
00:19:37,250 --> 00:19:39,530
‫Tudo o que queremos fazer é realmente

368
00:19:39,530 --> 00:19:40,880
‫atualizá-lo e, portanto, não

369
00:19:40,880 --> 00:19:43,700
‫armazenamos o valor dos resultados da premissa em qualquer lugar.

370
00:19:43,700 --> 00:19:44,960
‫OK.

371
00:19:44,960 --> 00:19:49,960
‫Então, vamos simplesmente tentar adicionar outra revisão aqui,

372
00:19:50,050 --> 00:19:53,373
‫desta vez com uma péssima.

373
00:19:55,800 --> 00:19:56,810
‫OK.

374
00:19:56,810 --> 00:20:00,650
‫E antes de mais nada, vamos dar uma olhada nas estatísticas.

375
00:20:00,650 --> 00:20:03,300
‫Obviamente, obtemos a classificação de quatro, o número de classificações

376
00:20:03,300 --> 00:20:06,203
‫e a média de 3. 5

377
00:20:07,270 --> 00:20:10,090
‫Então, agora, para ver se realmente funcionou,

378
00:20:10,090 --> 00:20:13,290
‫vamos verificar o Compass ou também podemos usar ou

379
00:20:13,290 --> 00:20:15,223
‫obter o ponto final do

380
00:20:16,270 --> 00:20:17,320
‫passeio, ok.

381
00:20:17,320 --> 00:20:20,593
‫Então precisamos do tour ID, que podemos

382
00:20:23,550 --> 00:20:27,160
‫copiar daqui, colá-lo aqui, e agora é

383
00:20:27,160 --> 00:20:30,060
‫o momento e de fato funcionou,

384
00:20:30,060 --> 00:20:31,110
‫perfeito.

385
00:20:31,110 --> 00:20:34,940
‫Isso é incrível, absolutamente fantástico.

386
00:20:34,940 --> 00:20:37,810
‫Só mais uma vez para se divertir,

387
00:20:37,810 --> 00:20:39,893
‫vamos adicionar outro comentário aqui.

388
00:20:44,330 --> 00:20:45,163
‫OK.

389
00:20:45,163 --> 00:20:48,480
‫Atualize este, e agora temos cinco e

390
00:20:48,480 --> 00:20:51,760
‫nossa média subiu um pouco.

391
00:20:51,760 --> 00:20:52,593
‫Excelente.

392
00:20:52,593 --> 00:20:56,570
‫Então, vamos parar um segundo e recapitular o que fizemos aqui.

393
00:20:56,570 --> 00:20:59,690
‫Então, começamos criando um método estático.

394
00:20:59,690 --> 00:21:01,770
‫Então, toda essa função

395
00:21:01,770 --> 00:21:04,870
‫aqui basicamente cria as estatísticas da média

396
00:21:04,870 --> 00:21:07,980
‫e do número de avaliações para o ID

397
00:21:07,980 --> 00:21:12,230
‫do tour para o qual a avaliação atual foi criada, ok.

398
00:21:12,230 --> 00:21:14,870
‫E criamos essa função como um método

399
00:21:14,870 --> 00:21:18,030
‫estático, porque precisávamos chamar a função de agregação

400
00:21:18,030 --> 00:21:19,310
‫no modelo.

401
00:21:19,310 --> 00:21:22,080
‫Portanto, em um método estático para esta variável

402
00:21:22,080 --> 00:21:23,910
‫chama exatamente para um método.

403
00:21:23,910 --> 00:21:26,670
‫Portanto, é muito útil nesses casos.

404
00:21:26,670 --> 00:21:29,930
‫Então, construímos nosso pipeline de agregação aqui, onde selecionamos

405
00:21:29,930 --> 00:21:32,590
‫todas as avaliações que correspondem ao ID

406
00:21:32,590 --> 00:21:35,880
‫do tour atual e, em seguida, são calculadas as

407
00:21:35,880 --> 00:21:38,470
‫estatísticas de todas essas avaliações.

408
00:21:38,470 --> 00:21:40,520
‫Depois que isso

409
00:21:40,520 --> 00:21:45,470
‫foi feito, salvamos as estatísticas do tour atual, certo.

410
00:21:45,470 --> 00:21:47,690
‫Então, para realmente usar essa

411
00:21:47,690 --> 00:21:52,570
‫função, nós a chamamos depois que uma nova revisão foi criada, ok.

412
00:21:52,570 --> 00:21:55,620
‫Para isso, precisamos usar isso. construtor porque é

413
00:21:55,620 --> 00:21:58,930
‫isso que aponta para o modelo atual.

414
00:21:58,930 --> 00:22:02,037
‫Agora lembre-se de como dissemos que também queremos

415
00:22:02,037 --> 00:22:06,350
‫atualizar as estatísticas sempre que uma revisão for editada ou excluída,

416
00:22:06,350 --> 00:22:08,090
‫porque essas ações, é

417
00:22:08,090 --> 00:22:11,210
‫claro, também influenciarão o número e a média.

418
00:22:11,210 --> 00:22:13,960
‫No entanto, fazer isso é um pouco mais complexo.

419
00:22:13,960 --> 00:22:18,140
‫Então, como este vídeo já está muito longo, vamos

420
00:22:18,140 --> 00:22:20,493
‫deixar isso para o próximo.

