﻿1
00:00:01,090 --> 00:00:03,370
‫Professor: Agora vamos começar a criar

2
00:00:03,370 --> 00:00:06,903
‫documentos, testar o modelo e realmente começar a usar o Mongoose.

3
00:00:08,510 --> 00:00:10,570
‫E estou muito animado com

4
00:00:10,570 --> 00:00:12,823
‫este vídeo, então vamos começar aqui.

5
00:00:14,130 --> 00:00:17,143
‫Então, o que vamos fazer é criar uma nova

6
00:00:19,000 --> 00:00:21,373
‫variável, e vou chamá-la de testTour, e

7
00:00:22,510 --> 00:00:24,400
‫este será um novo documento

8
00:00:24,400 --> 00:00:26,500
‫criado a partir do modelo de

9
00:00:26,500 --> 00:00:28,460
‫passeio que criamos na última aula.

10
00:00:28,460 --> 00:00:29,520
‫Então o

11
00:00:29,520 --> 00:00:33,110
‫que vamos fazer é dizer new Tour, e

12
00:00:33,110 --> 00:00:36,443
‫então passar um objeto com os dados.

13
00:00:38,020 --> 00:00:39,913
‫Então, chame, digamos, novamente, 'The

14
00:00:41,920 --> 00:00:44,100
‫Forest Hiker', assim como temos usado

15
00:00:44,100 --> 00:00:46,463
‫antes e, em seguida, a classificação, digamos

16
00:00:47,630 --> 00:00:49,513
‫4. 7

17
00:00:53,157 --> 00:00:54,740
‫e o

18
00:00:56,010 --> 00:00:58,643
‫preço, digamos 497, certo?

19
00:00:59,690 --> 00:01:02,570
‫Então, este é, novamente, um novo documento que

20
00:01:02,570 --> 00:01:04,890
‫criamos a partir de um modelo de

21
00:01:04,890 --> 00:01:06,610
‫passeio, ou construtores de

22
00:01:06,610 --> 00:01:08,830
‫função, e como eu disse antes,

23
00:01:08,830 --> 00:01:11,390
‫isso é meio que usar construtores de

24
00:01:11,390 --> 00:01:14,660
‫função JavaScript, ou classes JavaScript se você estiver usando

25
00:01:14,660 --> 00:01:16,440
‫ES6, basicamente para criamos novos

26
00:01:16,440 --> 00:01:18,370
‫objetos de uma classe, certo,

27
00:01:18,370 --> 00:01:21,020
‫e essa é exatamente a mesma sintaxe,

28
00:01:21,020 --> 00:01:22,660
‫na verdade, então

29
00:01:22,660 --> 00:01:24,780
‫usamos a palavra-chave name, e então

30
00:01:24,780 --> 00:01:27,730
‫o nome da classe no ES6, assim, certo?

31
00:01:27,730 --> 00:01:29,930
‫Agora, aqui, não é exatamente o mesmo,

32
00:01:29,930 --> 00:01:31,890
‫mas esta analogia é

33
00:01:31,890 --> 00:01:33,890
‫útil para entender como isso funciona.

34
00:01:33,890 --> 00:01:36,710
‫Portanto, este documento de tour de teste que acabamos

35
00:01:36,710 --> 00:01:39,380
‫de criar é uma instância do modelo de

36
00:01:39,380 --> 00:01:41,670
‫tour e agora contém alguns métodos que

37
00:01:41,670 --> 00:01:43,010
‫podemos usar para

38
00:01:43,010 --> 00:01:44,873
‫interagir com o banco de dados.

39
00:01:45,890 --> 00:01:47,750
‫Então deixe-me mostrar isso para você.

40
00:01:47,750 --> 00:01:52,030
‫Portanto, agora podemos dizer testTour. salve, e isso irá salvá-lo

41
00:01:52,030 --> 00:01:53,550
‫na coleção de

42
00:01:53,550 --> 00:01:56,810
‫passeios no banco de dados, ok, e é

43
00:01:56,810 --> 00:01:59,060
‫realmente tão simples quanto isso.

44
00:01:59,060 --> 00:02:01,700
‫Então, novamente, temos nossa instância de documento

45
00:02:01,700 --> 00:02:03,730
‫que é testTour, e

46
00:02:03,730 --> 00:02:05,870
‫nela podemos chamar o método save

47
00:02:05,870 --> 00:02:08,653
‫para salvar o documento no banco de dados.

48
00:02:09,490 --> 00:02:11,310
‫Agora, este salvamento aqui

49
00:02:11,310 --> 00:02:13,453
‫retornará uma promessa que podemos consumir.

50
00:02:15,010 --> 00:02:17,920
‫Então, por agora, vamos usar para isso e,

51
00:02:17,920 --> 00:02:19,797
‫no futuro, vamos realmente usar

52
00:02:19,797 --> 00:02:23,340
‫async await para consumir essas promessas, mas por agora, vamos

53
00:02:23,340 --> 00:02:24,830
‫mantê-lo simples e

54
00:02:24,830 --> 00:02:26,880
‫não criar mais funções, e então,

55
00:02:26,880 --> 00:02:28,750
‫em vez disso, estamos apenas

56
00:02:28,750 --> 00:02:30,550
‫usando o método then aqui.

57
00:02:30,550 --> 00:02:33,010
‫Então, aqui, temos acesso ao documento que acabou de

58
00:02:33,010 --> 00:02:35,123
‫ser salvo no banco de dados.

59
00:02:36,920 --> 00:02:39,850
‫Então, basicamente, o valor do resultado da promessa

60
00:02:39,850 --> 00:02:42,180
‫que o método save retorna

61
00:02:42,180 --> 00:02:45,690
‫é o documento final, pois está no banco de dados.

62
00:02:45,690 --> 00:02:47,770
‫E então vamos prosseguir

63
00:02:47,770 --> 00:02:51,293
‫e registrar o documento no console, certo?

64
00:02:52,290 --> 00:02:54,620
‫Agora, por outro lado, salvar este

65
00:02:54,620 --> 00:02:57,030
‫documento no banco de dados também pode

66
00:02:57,030 --> 00:02:59,749
‫dar errado, então vamos pegar esse erro, ok?

67
00:02:59,749 --> 00:03:02,100
‫Assim, como antes, usamos o método

68
00:03:02,100 --> 00:03:05,400
‫catch para capturar quaisquer erros potenciais, e se houver

69
00:03:05,400 --> 00:03:07,460
‫um erro ao salvar o documento

70
00:03:07,460 --> 00:03:09,430
‫no banco de dados, poderemos

71
00:03:09,430 --> 00:03:11,130
‫detectar esse erro aqui

72
00:03:11,130 --> 00:03:12,223
‫neste método.

73
00:03:14,820 --> 00:03:17,510
‫Ok, então basicamente, aqui nesta função que estou

74
00:03:17,510 --> 00:03:19,103
‫passando para a captura.

75
00:03:21,570 --> 00:03:24,710
‫Ok, por enquanto, tudo que eu quero fazer, realmente,

76
00:03:24,710 --> 00:03:26,623
‫é logar no console.

77
00:03:27,660 --> 00:03:30,470
‫Digamos, 'Erro', adicione alguns emojis aqui para

78
00:03:30,470 --> 00:03:32,800
‫torná-lo mais visível no

79
00:03:32,800 --> 00:03:35,154
‫console, e então podemos passar

80
00:03:35,154 --> 00:03:37,990
‫um segundo argumento para o log do

81
00:03:37,990 --> 00:03:40,490
‫console, que será o erro, certo?

82
00:03:40,490 --> 00:03:41,323
‫Você está pronto?

83
00:03:41,323 --> 00:03:43,170
‫Então, vamos salvá-lo

84
00:03:43,170 --> 00:03:46,260
‫agora, e isso executará o código que

85
00:03:46,260 --> 00:03:49,520
‫está aqui, então basicamente crie este novo tour

86
00:03:49,520 --> 00:03:53,090
‫e tente salvá-lo no banco de dados imediatamente, ok?

87
00:03:53,090 --> 00:03:54,410
‫Então, vamos salvá-lo agora

88
00:03:54,410 --> 00:03:56,433
‫e ver o que acontece no console e,

89
00:03:58,170 --> 00:03:59,733
‫de fato, aqui vamos nós.

90
00:04:01,260 --> 00:04:03,700
‫Então você vê que este é o

91
00:04:03,700 --> 00:04:07,580
‫documento que acabou de ser salvo em nosso banco de dados, certo?

92
00:04:07,580 --> 00:04:10,350
‫Portanto, aqui também vemos o ID,

93
00:04:10,350 --> 00:04:13,451
‫que é simplesmente gerado automaticamente pelo MongoDB

94
00:04:13,451 --> 00:04:16,770
‫e é simplesmente o identificador exclusivo do documento.

95
00:04:16,770 --> 00:04:19,940
‫Assim, como aconteceu antes na seção MongoDB,

96
00:04:19,940 --> 00:04:22,800
‫obtemos automaticamente esse identificador exclusivo para

97
00:04:22,800 --> 00:04:24,290
‫o novo objeto.

98
00:04:24,290 --> 00:04:26,960
‫O Mongoose também adiciona automaticamente este

99
00:04:26,960 --> 00:04:29,800
‫V e define-o como zero aqui, mas

100
00:04:29,800 --> 00:04:32,770
‫isso não é realmente importante neste ponto, certo?

101
00:04:32,770 --> 00:04:35,090
‫O que importa aqui é que

102
00:04:35,090 --> 00:04:38,510
‫nosso novo documento foi adicionado com sucesso ao banco de

103
00:04:38,510 --> 00:04:40,920
‫dados e, apenas para ter certeza, vamos

104
00:04:40,920 --> 00:04:45,570
‫passar para o Compass e dar uma olhada em nosso banco de dados lá.

105
00:04:45,570 --> 00:04:48,150
‫Aqui, temos a coleção de passeios

106
00:04:48,150 --> 00:04:51,850
‫e, em seguida, temos o documento que acabamos de criar.

107
00:04:51,850 --> 00:04:54,940
‫Portanto, ele tem exatamente o mesmo ID e, claro, todos

108
00:04:54,940 --> 00:04:57,410
‫os outros dados que colocamos nele e, de

109
00:04:57,410 --> 00:04:59,230
‫fato, este é o objeto que

110
00:04:59,230 --> 00:05:00,543
‫acabamos de criar.

111
00:05:01,550 --> 00:05:03,960
‫E lembre-se de que excluímos a coleção

112
00:05:03,960 --> 00:05:05,830
‫de passeios aqui em

113
00:05:05,830 --> 00:05:07,800
‫um dos vídeos anteriores, certo,

114
00:05:07,800 --> 00:05:10,010
‫mas o Mongoose criou automaticamente essa

115
00:05:10,010 --> 00:05:12,070
‫nova coleção aqui assim que criamos

116
00:05:12,070 --> 00:05:13,960
‫o primeiro documento usando o

117
00:05:13,960 --> 00:05:15,730
‫modelo de passeio, e

118
00:05:15,730 --> 00:05:17,250
‫esse nome aqui

119
00:05:17,250 --> 00:05:19,820
‫vem basicamente desse modelo de passeio, ele

120
00:05:19,820 --> 00:05:23,730
‫simplesmente nos dá esse nome no plural, assim como tínhamos antes.

121
00:05:23,730 --> 00:05:26,870
‫Perfeito, acabamos de fazer nosso aplicativo expresso realmente

122
00:05:26,870 --> 00:05:29,660
‫interagir com um banco de dados MongoDB

123
00:05:29,660 --> 00:05:31,060
‫pela primeira vez,

124
00:05:31,060 --> 00:05:34,690
‫e isso é realmente incrível, se você me perguntar.

125
00:05:34,690 --> 00:05:35,900
‫Então, isso significa

126
00:05:35,900 --> 00:05:39,343
‫que agora podemos criar documentos diretamente do nosso código.

127
00:05:40,560 --> 00:05:43,700
‫Então, isso me deixa muito feliz, então vamos

128
00:05:43,700 --> 00:05:45,670
‫tentar novamente com outro,

129
00:05:45,670 --> 00:05:48,140
‫certo, mas antes de fazermos isso,

130
00:05:48,140 --> 00:05:49,930
‫eu quero apenas recarregar

131
00:05:49,930 --> 00:05:52,630
‫este arquivo aqui que tentará salvar

132
00:05:52,630 --> 00:05:55,710
‫este documento aqui no banco de dados

133
00:05:55,710 --> 00:05:58,400
‫novamente , certo, simplesmente porque todo

134
00:05:58,400 --> 00:06:00,183
‫esse código aqui

135
00:06:00,183 --> 00:06:03,350
‫é executado toda vez que salvamos o arquivo.

136
00:06:03,350 --> 00:06:05,945
‫Agora, vamos tentar adivinhar o que vai acontecer assim

137
00:06:05,945 --> 00:06:07,730
‫que eu salvar este arquivo.

138
00:06:07,730 --> 00:06:08,563
‫Você consegue adivinhar?

139
00:06:09,930 --> 00:06:11,610
‫Vamos esperar

140
00:06:11,610 --> 00:06:14,160
‫e, de fato, obteremos algo diferente

141
00:06:14,160 --> 00:06:16,000
‫agora, obteremos um erro

142
00:06:16,000 --> 00:06:18,260
‫aqui, e o erro que

143
00:06:18,260 --> 00:06:20,940
‫vemos é esta coleção de erro

144
00:06:20,940 --> 00:06:25,940
‫de chave duplicada, que aqui embaixo diz esta chave duplicada, certo?

145
00:06:26,210 --> 00:06:28,520
‫Então já temos um passeio com

146
00:06:28,520 --> 00:06:30,680
‫o nome de 'Forest Hiker',

147
00:06:30,680 --> 00:06:32,843
‫e agora estávamos tentando criar

148
00:06:32,843 --> 00:06:35,170
‫outro, e como em nosso esquema

149
00:06:35,170 --> 00:06:37,817
‫temos essa propriedade única aqui, isso não

150
00:06:37,817 --> 00:06:39,370
‫é permitido, lembra?

151
00:06:39,370 --> 00:06:40,852
‫Portanto, definimos esse

152
00:06:40,852 --> 00:06:43,250
‫único aqui como verdadeiro para tornar impossível

153
00:06:43,250 --> 00:06:45,810
‫ter dois tours com o mesmo nome e,

154
00:06:45,810 --> 00:06:48,743
‫então, acabamos de provar que isso está realmente funcionando.

155
00:06:49,580 --> 00:06:51,990
‫Tudo bem, então vamos simplesmente substituir o

156
00:06:51,990 --> 00:06:53,370
‫código que temos

157
00:06:53,370 --> 00:06:56,173
‫aqui para criar um novo passeio com outro nome.

158
00:06:57,060 --> 00:06:59,917
‫Vamos chamá-lo de 'The Park Camper'

159
00:07:01,640 --> 00:07:04,560
‫e remover o preço e também

160
00:07:04,560 --> 00:07:05,943
‫a avaliação.

161
00:07:06,890 --> 00:07:09,403
‫Então, você consegue adivinhar o que vai acontecer agora?

162
00:07:10,280 --> 00:07:12,450
‫Vamos limpar, ou na verdade ele

163
00:07:12,450 --> 00:07:14,370
‫já carregou porque assim que

164
00:07:14,370 --> 00:07:17,190
‫eu cliquei aqui, ele salvou o arquivo, e

165
00:07:17,190 --> 00:07:20,560
‫então, sim, acabamos de receber outro erro, então você

166
00:07:20,560 --> 00:07:22,530
‫pode ver isso aqui, significando

167
00:07:22,530 --> 00:07:24,620
‫que não salvamos com sucesso este

168
00:07:24,620 --> 00:07:27,170
‫documento para o banco de dados, e

169
00:07:27,170 --> 00:07:30,200
‫o que temos aqui agora é um erro

170
00:07:30,200 --> 00:07:32,090
‫de validação vindo

171
00:07:32,090 --> 00:07:34,710
‫do campo de preço dizendo 'Um passeio

172
00:07:34,710 --> 00:07:36,670
‫deve ter um preço', e

173
00:07:36,670 --> 00:07:39,970
‫essa é exatamente a mensagem que especificamos aqui, certo?

174
00:07:39,970 --> 00:07:42,160
‫Simplesmente porque nesta linha dissemos que

175
00:07:42,160 --> 00:07:45,320
‫o preço é um campo obrigatório, tudo bem,

176
00:07:45,320 --> 00:07:47,050
‫e este obrigatório,

177
00:07:47,050 --> 00:07:49,750
‫como mencionei, é um validador, e aqui

178
00:07:49,750 --> 00:07:52,260
‫embaixo, obtemos um erro de validação.

179
00:07:52,260 --> 00:07:53,520
‫E agora

180
00:07:55,860 --> 00:08:00,050
‫vamos corrigir isso e especificar o preço, digamos 997,

181
00:08:00,050 --> 00:08:01,460
‫e salvar novamente.

182
00:08:01,460 --> 00:08:03,310
‫Agora, desta vez, deve funcionar

183
00:08:03,310 --> 00:08:06,010
‫porque a classificação não é exigida e,

184
00:08:06,010 --> 00:08:07,780
‫portanto, quando descemos

185
00:08:07,780 --> 00:08:09,930
‫aqui, nosso documento foi realmente

186
00:08:09,930 --> 00:08:13,060
‫salvo com sucesso no banco de dados, entendeu?

187
00:08:13,060 --> 00:08:15,450
‫Bem, não especificamos a classificação aqui neste tour de teste,

188
00:08:15,450 --> 00:08:19,240
‫mas você vê que ainda é 4. 5, porque definimos

189
00:08:19,240 --> 00:08:20,800
‫o padrão como

190
00:08:20,800 --> 00:08:23,770
‫4. 5 aqui em cima.

191
00:08:23,770 --> 00:08:24,750
‫Então, eu só

192
00:08:24,750 --> 00:08:26,763
‫queria mostrar isso aqui neste exemplo rápido.

193
00:08:27,770 --> 00:08:30,810
‫Ok, então tivemos sucesso novamente, então vamos

194
00:08:30,810 --> 00:08:33,210
‫voltar aqui, recarregar, você está clicando

195
00:08:33,210 --> 00:08:35,690
‫neste botão e, de fato, agora

196
00:08:35,690 --> 00:08:37,840
‫temos nossos dois tours.

197
00:08:37,840 --> 00:08:40,930
‫Ótimo, e lembro como foi incrível para mim quando

198
00:08:40,930 --> 00:08:43,370
‫isso funcionou pela primeira vez, quando eu

199
00:08:43,370 --> 00:08:46,250
‫estava começando a aprender Express e Mongo, e como

200
00:08:46,250 --> 00:08:48,120
‫construir esses aplicativos, então eu

201
00:08:48,120 --> 00:08:50,240
‫realmente espero que você esteja se

202
00:08:50,240 --> 00:08:52,130
‫sentindo da mesma forma agora,

203
00:08:52,130 --> 00:08:54,100
‫já que você acabou de criar

204
00:08:54,100 --> 00:08:56,033
‫seus primeiros documentos usando Express

205
00:08:56,033 --> 00:08:57,823
‫e, é claro, MongoDB.

