﻿1
00:00:01,100 --> 00:00:04,883
‫-: Neste vídeo, vamos implementar a atualização do documento.

2
00:00:06,250 --> 00:00:09,810
‫E então, aqui, em nosso manipulador de tour de atualização, vamos

3
00:00:09,810 --> 00:00:11,803
‫começar tornando-o uma função assíncrona.

4
00:00:14,650 --> 00:00:18,250
‫Então, ou tente pegar o bloco, e estou fazendo

5
00:00:18,250 --> 00:00:22,130
‫isso muito rapidamente agora, porque já estamos acostumados com isso

6
00:00:22,130 --> 00:00:22,963
‫neste ponto.

7
00:00:24,330 --> 00:00:25,180
‫Direito?

8
00:00:25,180 --> 00:00:28,210
‫Então, isso vai para o bloco try

9
00:00:28,210 --> 00:00:32,440
‫e eu simplesmente pego este aqui, do bloco catch dessa

10
00:00:33,450 --> 00:00:34,693
‫outra função.

11
00:00:36,130 --> 00:00:37,653
‫Tudo bem, então.

12
00:00:39,230 --> 00:00:40,660
‫Aqui vamos nós.

13
00:00:40,660 --> 00:00:42,430
‫E agora, o que

14
00:00:42,430 --> 00:00:44,620
‫precisamos fazer aqui no início

15
00:00:44,620 --> 00:00:47,140
‫deste bloco try é basicamente consultar o

16
00:00:47,140 --> 00:00:50,580
‫documento que queremos atualizar e, em seguida, atualizá-lo, certo?

17
00:00:50,580 --> 00:00:51,730
‫E podemos realmente

18
00:00:51,730 --> 00:00:54,250
‫fazer tudo em um comando com o mangusto.

19
00:00:54,250 --> 00:00:57,160
‫E, lembre-se, novamente, que vamos atualizar o tour

20
00:00:57,160 --> 00:00:59,370
‫com base em uma identificação, ok?

21
00:00:59,370 --> 00:01:03,320
‫Então, é uma situação semelhante a esta aqui,

22
00:01:03,320 --> 00:01:05,590
‫onde encontramos por ID.

23
00:01:05,590 --> 00:01:08,130
‫E agora, podemos realmente fazer algo

24
00:01:08,130 --> 00:01:11,380
‫muito semelhante, que é localizar por ID e atualizar.

25
00:01:11,380 --> 00:01:13,713
‫Então, novamente, tudo em uma consulta.

26
00:01:14,600 --> 00:01:16,790
‫Então, vamos fazer um tour.

27
00:01:20,400 --> 00:01:22,963
‫findByID e atualização.

28
00:01:24,150 --> 00:01:27,520
‫Ok, então, o que precisamos passar aqui?

29
00:01:27,520 --> 00:01:31,290
‫Bem, é claro, o ID, para que possamos primeiro encontrar o

30
00:01:31,290 --> 00:01:33,313
‫documento que deve ser atualizado.

31
00:01:34,620 --> 00:01:39,030
‫Então, assim como antes, isso é req. params. ID e,

32
00:01:39,030 --> 00:01:42,690
‫em seguida, os dados que realmente queremos alterar.

33
00:01:42,690 --> 00:01:44,750
‫E esses dados estarão no corpo, assim

34
00:01:44,750 --> 00:01:46,763
‫como na solicitação de postagem.

35
00:01:48,430 --> 00:01:51,330
‫Então req. corpo, ok?

36
00:01:51,330 --> 00:01:53,470
‫E então, como um terceiro

37
00:01:53,470 --> 00:01:57,050
‫argumento, também podemos corrigir algumas opções e faremos isso.

38
00:01:57,050 --> 00:02:00,600
‫E a primeira opção que desejo especificar é nova

39
00:02:01,540 --> 00:02:03,690
‫e configurá-la como verdadeira.

40
00:02:03,690 --> 00:02:06,760
‫Pois desta forma, então o novo documento atualizado

41
00:02:06,760 --> 00:02:08,870
‫é aquele que será devolvido.

42
00:02:08,870 --> 00:02:11,810
‫E já que queremos enviar de volta

43
00:02:11,810 --> 00:02:14,410
‫aquele documento atualizado para o cliente,

44
00:02:14,410 --> 00:02:18,380
‫sempre queremos que esse método realmente retorne aquele novo documento, ok?

45
00:02:18,380 --> 00:02:22,160
‫Dessa forma, faz sentido aguardar

46
00:02:22,160 --> 00:02:27,160
‫essa consulta e salvá-la em uma nova variável.

47
00:02:28,710 --> 00:02:30,720
‫Então, basta chamá-lo de

48
00:02:30,720 --> 00:02:34,743
‫tour aqui e, novamente, aguardar o resultado dessa consulta.

49
00:02:35,640 --> 00:02:38,200
‫Todos esses métodos que usamos no

50
00:02:38,200 --> 00:02:41,923
‫tour até agora, localizar por ID e atualizar ou,

51
00:02:43,220 --> 00:02:47,300
‫bem, não criar realmente, mas localizar por ID ou localizar,

52
00:02:47,300 --> 00:02:51,350
‫todos eles retornarão consultas, portanto, são consultas métodos e deixe-me

53
00:02:51,350 --> 00:02:53,320
‫mostrar isso a

54
00:02:53,320 --> 00:02:55,700
‫você na documentação do mangusto.

55
00:02:55,700 --> 00:02:58,510
‫Então, até este ponto, não demos uma olhada

56
00:02:58,510 --> 00:03:00,300
‫na documentação até agora.

57
00:03:00,300 --> 00:03:01,850
‫E então, vamos fazer isso rapidamente.

58
00:03:01,850 --> 00:03:05,080
‫Então, no modelo, que no nosso caso é o tour,

59
00:03:05,080 --> 00:03:07,610
‫temos todos esses métodos de consulta, certo?

60
00:03:07,610 --> 00:03:11,920
‫Então você vê localizar, localizar um, localizar por ID, que é

61
00:03:11,920 --> 00:03:14,530
‫apenas uma abreviação para localizar um.

62
00:03:14,530 --> 00:03:17,460
‫Em seguida, você vê localizar por ID e

63
00:03:17,460 --> 00:03:19,320
‫atualizar, que é o

64
00:03:19,320 --> 00:03:22,018
‫que estamos usando no momento e que, na

65
00:03:22,018 --> 00:03:26,440
‫verdade, é apenas uma abreviação para localizar e atualizar, onde estamos consultando por

66
00:03:26,440 --> 00:03:30,380
‫um ID, tão semelhante ao que teve na ultima palestra, ok?

67
00:03:30,380 --> 00:03:33,630
‫E, na verdade, podemos clicar em qualquer um deles,

68
00:03:33,630 --> 00:03:36,340
‫então vamos fazer o que estamos

69
00:03:36,340 --> 00:03:39,931
‫usando atualmente, e isso nos levará realmente à documentação da

70
00:03:39,931 --> 00:03:43,560
‫API que nos mostra como realmente usar um determinado método.

71
00:03:43,560 --> 00:03:46,650
‫Então você vê que passamos o ID,

72
00:03:46,650 --> 00:03:50,550
‫então o valor, fora do ID pelo qual consultar, passamos o

73
00:03:50,550 --> 00:03:55,320
‫objeto com os dados a serem atualizados e passamos um objeto de opções.

74
00:03:55,320 --> 00:03:57,410
‫E aqui podemos realmente ver

75
00:03:57,410 --> 00:03:59,770
‫as opções que podemos definir,

76
00:03:59,770 --> 00:04:03,360
‫então lembre-se, apenas definimos novo como verdadeiro e, como

77
00:04:03,360 --> 00:04:06,570
‫diz aqui, isso retornará o documento modificado em

78
00:04:06,570 --> 00:04:08,480
‫vez do original.

79
00:04:08,480 --> 00:04:11,500
‫Agora, outro que realmente queremos definir

80
00:04:11,500 --> 00:04:15,690
‫como verdadeiro são validadores de execução, de modo que cada

81
00:04:15,690 --> 00:04:19,160
‫vez que atualizarmos um determinado documento, os validadores

82
00:04:19,160 --> 00:04:22,334
‫que especificamos no esquema serão executados novamente, certo?

83
00:04:22,334 --> 00:04:26,050
‫E falaremos muito sobre validadores e validação um pouco mais

84
00:04:26,050 --> 00:04:27,600
‫adiante nesta seção, mas

85
00:04:27,600 --> 00:04:31,770
‫vou deixar isso aqui por enquanto para que, basicamente, não nos

86
00:04:31,770 --> 00:04:32,743
‫esqueçamos disso.

87
00:04:34,340 --> 00:04:35,530
‫OK?

88
00:04:35,530 --> 00:04:38,810
‫Salve agora e, na verdade, quero voltar aqui

89
00:04:38,810 --> 00:04:40,880
‫apenas para mostrar quantos

90
00:04:40,880 --> 00:04:43,210
‫métodos realmente temos no mangusto.

91
00:04:43,210 --> 00:04:46,250
‫Portanto, no modelo, temos todos esses métodos que você

92
00:04:46,250 --> 00:04:47,753
‫vê nesta lista.

93
00:04:48,620 --> 00:04:51,300
‫Então, por exemplo, usamos create antes,

94
00:04:51,300 --> 00:04:52,833
‫também usamos find.

95
00:04:53,850 --> 00:04:54,683
‫OK?

96
00:04:54,683 --> 00:04:57,090
‫E então os que vocês veem aqui no

97
00:04:57,090 --> 00:04:59,350
‫topo estão disponíveis direto no modelo, e isso,

98
00:04:59,350 --> 00:05:01,363
‫no nosso caso, é o tour.

99
00:05:02,300 --> 00:05:04,320
‫Agora, aqui embaixo você, por exemplo,

100
00:05:04,320 --> 00:05:08,520
‫também vê o modelo. protótipo. seguro, por exemplo.

101
00:05:08,520 --> 00:05:10,770
‫E este, na verdade, também

102
00:05:10,770 --> 00:05:14,290
‫já usamos bem quando começamos a trabalhar com o mangusto.

103
00:05:14,290 --> 00:05:16,650
‫Portanto, não tenho certeza se você está familiarizado com isso,

104
00:05:16,650 --> 00:05:20,070
‫mas no modelo de script java. protótipo sempre significa um

105
00:05:20,070 --> 00:05:23,560
‫objeto criado a partir de uma classe ou, neste caso, criado

106
00:05:23,560 --> 00:05:25,330
‫a partir de um modelo.

107
00:05:25,330 --> 00:05:29,010
‫E assim, o método de salvamento aqui, refere-se a um método de

108
00:05:29,010 --> 00:05:32,530
‫salvamento chamado em um documento e não em um tour.

109
00:05:32,530 --> 00:05:35,370
‫E lembre-se de que foi exatamente isso que fizemos.

110
00:05:35,370 --> 00:05:37,670
‫E acho que ainda tenho isso aqui como um comentário.

111
00:05:40,430 --> 00:05:41,550
‫Sim, bem aqui.

112
00:05:41,550 --> 00:05:45,717
‫Então, nós fizemos um tour, essa nova variável de tour aqui

113
00:05:45,717 --> 00:05:48,600
‫que foi criada a partir do modelo

114
00:05:48,600 --> 00:05:53,220
‫de tour, e então esse novo tour aqui teve acesso ao método save

115
00:05:53,220 --> 00:05:57,320
‫porque ele faz parte do objeto de protótipo desta classe.

116
00:05:57,320 --> 00:06:00,280
‫Certo, agora não quero aborrecê-lo com os

117
00:06:00,280 --> 00:06:02,760
‫fundamentos do java script, mas

118
00:06:02,760 --> 00:06:05,620
‫é importante para entender a documentação, ok?

119
00:06:05,620 --> 00:06:09,320
‫Porque em algum momento você precisará usar documentação,

120
00:06:09,320 --> 00:06:11,520
‫porque mangusto é yute.

121
00:06:11,520 --> 00:06:13,700
‫E, na verdade, vou te ensinar muitas das

122
00:06:13,700 --> 00:06:16,520
‫coisas que são importantes ao longo de todo este curso, mas

123
00:06:16,520 --> 00:06:19,240
‫às vezes você ainda vai precisar de algo que não

124
00:06:19,240 --> 00:06:20,740
‫lhe mostrei neste curso.

125
00:06:20,740 --> 00:06:23,060
‫Portanto, é importante que

126
00:06:23,060 --> 00:06:25,900
‫você realmente entenda a documentação também, certo?

127
00:06:25,900 --> 00:06:29,360
‫E então, novamente, quando você vê o modelo. protótipo aqui, você

128
00:06:29,360 --> 00:06:31,810
‫sabe que o método save aqui

129
00:06:31,810 --> 00:06:34,800
‫estará disponível em todas as instâncias criadas

130
00:06:34,800 --> 00:06:37,330
‫por meio de um modelo, ok?

131
00:06:37,330 --> 00:06:39,160
‫E, portanto, não o modelo em si.

132
00:06:39,160 --> 00:06:42,000
‫Então, por exemplo, se você tentou fazer uma turnê. salvo, você não

133
00:06:42,000 --> 00:06:43,660
‫seria capaz de usá-lo.

134
00:06:43,660 --> 00:06:46,960
‫Isso geraria um erro, mas, em vez disso, se você

135
00:06:46,960 --> 00:06:49,700
‫tentasse salvar em um documento criado por meio

136
00:06:49,700 --> 00:06:52,120
‫do tour, é claro que funcionaria, certo?

137
00:06:52,120 --> 00:06:53,840
‫Espero que faça sentido.

138
00:06:53,840 --> 00:06:56,670
‫E, de qualquer forma, você vê que

139
00:06:56,670 --> 00:07:00,310
‫temos um monte de outras coisas, então temos que consultar, das

140
00:07:00,310 --> 00:07:04,030
‫quais já falamos, porque, por exemplo, encontre por ID e atualize,

141
00:07:04,030 --> 00:07:08,320
‫ou encontre, ou encontre por ID, tudo isso vai retornar objetos de consulta.

142
00:07:08,320 --> 00:07:10,860
‫E então, mais tarde, quando vamos

143
00:07:10,860 --> 00:07:15,150
‫implementar coisas como classificação ou filtragem, usaremos este objeto de consulta.

144
00:07:15,150 --> 00:07:15,983
‫OK?

145
00:07:15,983 --> 00:07:19,751
‫Então, vamos voltar, nós meio que saímos do caminho ao olhar

146
00:07:19,751 --> 00:07:22,210
‫a documentação, mas, novamente, acho que é

147
00:07:22,210 --> 00:07:24,230
‫muito importante começar a olhar

148
00:07:24,230 --> 00:07:26,370
‫a documentação, porque um curso como

149
00:07:26,370 --> 00:07:29,670
‫este só pode levar você até certo ponto, e eu

150
00:07:29,670 --> 00:07:32,570
‫espero que você já saiba disso neste momento, ok?

151
00:07:32,570 --> 00:07:35,810
‫É muito importante que você também possa encontrar informações

152
00:07:35,810 --> 00:07:38,450
‫por conta própria, e também neste curso

153
00:07:38,450 --> 00:07:40,560
‫quero mostrar como fazer isso.

154
00:07:40,560 --> 00:07:43,460
‫De qualquer forma, vamos agora também enviar

155
00:07:43,460 --> 00:07:46,820
‫este tour atualizado de volta para o cliente,

156
00:07:46,820 --> 00:07:49,690
‫o que, no momento, não estamos

157
00:07:49,690 --> 00:07:52,810
‫fazendo, porque temos simplesmente esse tour atualizado aqui.

158
00:07:52,810 --> 00:07:56,470
‫Então, vamos nos livrar disso e simplesmente enviar para uma turnê.

159
00:07:56,470 --> 00:08:00,140
‫E lembre-se de que isso, na verdade, é realmente isso.

160
00:08:00,140 --> 00:08:03,940
‫Portanto, a propriedade tour é definida para o objeto tour, mas,

161
00:08:03,940 --> 00:08:07,360
‫graças ao ES6, não precisamos mais fazer isso quando

162
00:08:07,360 --> 00:08:11,160
‫o nome da propriedade tem o mesmo nome do valor.

163
00:08:11,160 --> 00:08:13,310
‫Ok, então vamos nos livrar disso.

164
00:08:13,310 --> 00:08:15,413
‫Isso faz com que nosso código pareça um pouco melhor.

165
00:08:17,350 --> 00:08:19,373
‫Ok, e agora vamos testá-lo.

166
00:08:20,980 --> 00:08:25,980
‫Voltando ao carteiro, aqui está o roteiro atualizado.

167
00:08:26,079 --> 00:08:27,960
‫E então, vamos realmente

168
00:08:27,960 --> 00:08:30,983
‫fazer isso no mesmo ID que usamos antes.

169
00:08:34,310 --> 00:08:35,550
‫Então, este aqui.

170
00:08:35,550 --> 00:08:38,827
‫Então chegamos ao corpo, aqui, e vamos mudar ...

171
00:08:39,761 --> 00:08:42,250
‫Bem, o que vamos mudar aqui?

172
00:08:42,250 --> 00:08:46,493
‫Bem, vamos mudar o preço para, tipo, 500.

173
00:08:48,040 --> 00:08:51,383
‫Portanto, preço, 500, envie-o e, de

174
00:08:52,630 --> 00:08:55,700
‫fato, isso nos dá o objeto

175
00:08:55,700 --> 00:08:58,250
‫recém-atualizado com o preço já

176
00:08:58,250 --> 00:09:00,730
‫definido para 500.

177
00:09:00,730 --> 00:09:03,410
‫E se agora obtivermos todos os passeios, isso, é

178
00:09:03,410 --> 00:09:05,150
‫claro, deve ser refletido aqui.

179
00:09:05,150 --> 00:09:06,480
‫E aqui está.

180
00:09:06,480 --> 00:09:09,223
‫Mas agora, digamos que o definimos como uma string.

181
00:09:13,930 --> 00:09:15,920
‫Vamos dar uma olhada no que acontece, então.

182
00:09:15,920 --> 00:09:17,930
‫Bem, então recebemos um erro.

183
00:09:17,930 --> 00:09:21,090
‫E isso porque rodamos os validadores novamente.

184
00:09:21,090 --> 00:09:23,497
‫Então, lembre-se de que temos ... Onde

185
00:09:24,900 --> 00:09:25,760
‫fica isso?

186
00:09:27,720 --> 00:09:28,553
‫Oh sim, aqui.

187
00:09:28,553 --> 00:09:32,070
‫Portanto, aqui especificamos que os validadores devem ser executados novamente.

188
00:09:32,070 --> 00:09:36,130
‫E então, agora o preço não é mais um número

189
00:09:36,130 --> 00:09:38,050
‫como era esperado, certo?

190
00:09:38,050 --> 00:09:41,580
‫Portanto, em um esquema, dizemos que o preço deve ser

191
00:09:41,580 --> 00:09:44,580
‫um número, mas, é claro, java script ou

192
00:09:44,580 --> 00:09:49,290
‫mongoose, na verdade, não pode, basicamente, converter essa string aqui em um número.

193
00:09:49,290 --> 00:09:50,820
‫Mas é isso que esperamos.

194
00:09:50,820 --> 00:09:53,350
‫Então aqui diz que tipo deve ser número.

195
00:09:53,350 --> 00:09:55,580
‫E assim, portanto, nos dá um

196
00:09:55,580 --> 00:09:58,540
‫erro, simplesmente porque estamos executando os validadores novamente.

197
00:09:58,540 --> 00:10:01,530
‫Então, vamos colocá-lo de volta em 500 e, é claro,

198
00:10:01,530 --> 00:10:02,730
‫ele estará de volta.

199
00:10:02,730 --> 00:10:05,430
‫Tudo bem, agora, lembre-se de que estamos realmente

200
00:10:05,430 --> 00:10:07,750
‫fazendo uma solicitação de patch aqui.

201
00:10:07,750 --> 00:10:11,000
‫Agora, se estivéssemos fazendo uma solicitação de colocação,

202
00:10:11,000 --> 00:10:13,670
‫lembre-se, você esperaria que o objeto

203
00:10:13,670 --> 00:10:15,190
‫original fosse completamente

204
00:10:15,190 --> 00:10:18,150
‫substituído pelo novo que é enviado, certo?

205
00:10:18,150 --> 00:10:20,280
‫Então, nesse caso, não funcionaria

206
00:10:20,280 --> 00:10:22,272
‫mais da forma que

207
00:10:22,272 --> 00:10:25,420
‫implementamos aqui porque esse simplesmente atualizou realmente

208
00:10:25,420 --> 00:10:29,360
‫os campos que são diferentes aqui no corpo, ok?

209
00:10:29,360 --> 00:10:32,150
‫Mas de qualquer forma, acho que o

210
00:10:32,150 --> 00:10:34,400
‫método patch é realmente muito

211
00:10:34,400 --> 00:10:38,490
‫mais útil e, portanto, será o único a ser implementado aqui.

212
00:10:38,490 --> 00:10:42,300
‫Legal, então temos três das nossas quatro operações corretas

213
00:10:42,300 --> 00:10:44,910
‫implementadas, só falta mais uma, que

214
00:10:44,910 --> 00:10:46,463
‫será excluída.

