‫Professor: Agora vamos começar a criar
‫documentos, testar o modelo e realmente começar a usar o Mongoose.
‫E estou muito animado com
‫este vídeo, então vamos começar aqui.
‫Então, o que vamos fazer é criar uma nova
‫variável, e vou chamá-la de testTour, e
‫este será um novo documento
‫criado a partir do modelo de
‫passeio que criamos na última aula.
‫Então o
‫que vamos fazer é dizer new Tour, e
‫então passar um objeto com os dados.
‫Então, chame, digamos, novamente, 'The
‫Forest Hiker', assim como temos usado
‫antes e, em seguida, a classificação, digamos
‫4. 7
‫e o
‫preço, digamos 497, certo?
‫Então, este é, novamente, um novo documento que
‫criamos a partir de um modelo de
‫passeio, ou construtores de
‫função, e como eu disse antes,
‫isso é meio que usar construtores de
‫função JavaScript, ou classes JavaScript se você estiver usando
‫ES6, basicamente para criamos novos
‫objetos de uma classe, certo,
‫e essa é exatamente a mesma sintaxe,
‫na verdade, então
‫usamos a palavra-chave name, e então
‫o nome da classe no ES6, assim, certo?
‫Agora, aqui, não é exatamente o mesmo,
‫mas esta analogia é
‫útil para entender como isso funciona.
‫Portanto, este documento de tour de teste que acabamos
‫de criar é uma instância do modelo de
‫tour e agora contém alguns métodos que
‫podemos usar para
‫interagir com o banco de dados.
‫Então deixe-me mostrar isso para você.
‫Portanto, agora podemos dizer testTour. salve, e isso irá salvá-lo
‫na coleção de
‫passeios no banco de dados, ok, e é
‫realmente tão simples quanto isso.
‫Então, novamente, temos nossa instância de documento
‫que é testTour, e
‫nela podemos chamar o método save
‫para salvar o documento no banco de dados.
‫Agora, este salvamento aqui
‫retornará uma promessa que podemos consumir.
‫Então, por agora, vamos usar para isso e,
‫no futuro, vamos realmente usar
‫async await para consumir essas promessas, mas por agora, vamos
‫mantê-lo simples e
‫não criar mais funções, e então,
‫em vez disso, estamos apenas
‫usando o método then aqui.
‫Então, aqui, temos acesso ao documento que acabou de
‫ser salvo no banco de dados.
‫Então, basicamente, o valor do resultado da promessa
‫que o método save retorna
‫é o documento final, pois está no banco de dados.
‫E então vamos prosseguir
‫e registrar o documento no console, certo?
‫Agora, por outro lado, salvar este
‫documento no banco de dados também pode
‫dar errado, então vamos pegar esse erro, ok?
‫Assim, como antes, usamos o método
‫catch para capturar quaisquer erros potenciais, e se houver
‫um erro ao salvar o documento
‫no banco de dados, poderemos
‫detectar esse erro aqui
‫neste método.
‫Ok, então basicamente, aqui nesta função que estou
‫passando para a captura.
‫Ok, por enquanto, tudo que eu quero fazer, realmente,
‫é logar no console.
‫Digamos, 'Erro', adicione alguns emojis aqui para
‫torná-lo mais visível no
‫console, e então podemos passar
‫um segundo argumento para o log do
‫console, que será o erro, certo?
‫Você está pronto?
‫Então, vamos salvá-lo
‫agora, e isso executará o código que
‫está aqui, então basicamente crie este novo tour
‫e tente salvá-lo no banco de dados imediatamente, ok?
‫Então, vamos salvá-lo agora
‫e ver o que acontece no console e,
‫de fato, aqui vamos nós.
‫Então você vê que este é o
‫documento que acabou de ser salvo em nosso banco de dados, certo?
‫Portanto, aqui também vemos o ID,
‫que é simplesmente gerado automaticamente pelo MongoDB
‫e é simplesmente o identificador exclusivo do documento.
‫Assim, como aconteceu antes na seção MongoDB,
‫obtemos automaticamente esse identificador exclusivo para
‫o novo objeto.
‫O Mongoose também adiciona automaticamente este
‫V e define-o como zero aqui, mas
‫isso não é realmente importante neste ponto, certo?
‫O que importa aqui é que
‫nosso novo documento foi adicionado com sucesso ao banco de
‫dados e, apenas para ter certeza, vamos
‫passar para o Compass e dar uma olhada em nosso banco de dados lá.
‫Aqui, temos a coleção de passeios
‫e, em seguida, temos o documento que acabamos de criar.
‫Portanto, ele tem exatamente o mesmo ID e, claro, todos
‫os outros dados que colocamos nele e, de
‫fato, este é o objeto que
‫acabamos de criar.
‫E lembre-se de que excluímos a coleção
‫de passeios aqui em
‫um dos vídeos anteriores, certo,
‫mas o Mongoose criou automaticamente essa
‫nova coleção aqui assim que criamos
‫o primeiro documento usando o
‫modelo de passeio, e
‫esse nome aqui
‫vem basicamente desse modelo de passeio, ele
‫simplesmente nos dá esse nome no plural, assim como tínhamos antes.
‫Perfeito, acabamos de fazer nosso aplicativo expresso realmente
‫interagir com um banco de dados MongoDB
‫pela primeira vez,
‫e isso é realmente incrível, se você me perguntar.
‫Então, isso significa
‫que agora podemos criar documentos diretamente do nosso código.
‫Então, isso me deixa muito feliz, então vamos
‫tentar novamente com outro,
‫certo, mas antes de fazermos isso,
‫eu quero apenas recarregar
‫este arquivo aqui que tentará salvar
‫este documento aqui no banco de dados
‫novamente , certo, simplesmente porque todo
‫esse código aqui
‫é executado toda vez que salvamos o arquivo.
‫Agora, vamos tentar adivinhar o que vai acontecer assim
‫que eu salvar este arquivo.
‫Você consegue adivinhar?
‫Vamos esperar
‫e, de fato, obteremos algo diferente
‫agora, obteremos um erro
‫aqui, e o erro que
‫vemos é esta coleção de erro
‫de chave duplicada, que aqui embaixo diz esta chave duplicada, certo?
‫Então já temos um passeio com
‫o nome de 'Forest Hiker',
‫e agora estávamos tentando criar
‫outro, e como em nosso esquema
‫temos essa propriedade única aqui, isso não
‫é permitido, lembra?
‫Portanto, definimos esse
‫único aqui como verdadeiro para tornar impossível
‫ter dois tours com o mesmo nome e,
‫então, acabamos de provar que isso está realmente funcionando.
‫Tudo bem, então vamos simplesmente substituir o
‫código que temos
‫aqui para criar um novo passeio com outro nome.
‫Vamos chamá-lo de 'The Park Camper'
‫e remover o preço e também
‫a avaliação.
‫Então, você consegue adivinhar o que vai acontecer agora?
‫Vamos limpar, ou na verdade ele
‫já carregou porque assim que
‫eu cliquei aqui, ele salvou o arquivo, e
‫então, sim, acabamos de receber outro erro, então você
‫pode ver isso aqui, significando
‫que não salvamos com sucesso este
‫documento para o banco de dados, e
‫o que temos aqui agora é um erro
‫de validação vindo
‫do campo de preço dizendo 'Um passeio
‫deve ter um preço', e
‫essa é exatamente a mensagem que especificamos aqui, certo?
‫Simplesmente porque nesta linha dissemos que
‫o preço é um campo obrigatório, tudo bem,
‫e este obrigatório,
‫como mencionei, é um validador, e aqui
‫embaixo, obtemos um erro de validação.
‫E agora
‫vamos corrigir isso e especificar o preço, digamos 997,
‫e salvar novamente.
‫Agora, desta vez, deve funcionar
‫porque a classificação não é exigida e,
‫portanto, quando descemos
‫aqui, nosso documento foi realmente
‫salvo com sucesso no banco de dados, entendeu?
‫Bem, não especificamos a classificação aqui neste tour de teste,
‫mas você vê que ainda é 4. 5, porque definimos
‫o padrão como
‫4. 5 aqui em cima.
‫Então, eu só
‫queria mostrar isso aqui neste exemplo rápido.
‫Ok, então tivemos sucesso novamente, então vamos
‫voltar aqui, recarregar, você está clicando
‫neste botão e, de fato, agora
‫temos nossos dois tours.
‫Ótimo, e lembro como foi incrível para mim quando
‫isso funcionou pela primeira vez, quando eu
‫estava começando a aprender Express e Mongo, e como
‫construir esses aplicativos, então eu
‫realmente espero que você esteja se
‫sentindo da mesma forma agora,
‫já que você acabou de criar
‫seus primeiros documentos usando Express
‫e, é claro, MongoDB.