Ligando os motores
Nessa página, vamos começar a usar o Mongoose. Este livro foi criado para um curso na Udemy, sendo assim, o mesmo deve ser usado em junção com o curso, para maior desempenho.
Nessa página, vamos começar a usar o Mongoose. Mongoose, de forma bem simples, é uma biblioteca desenvolvida para facilitar a interface entre MongoDB e Node.js.
Este livro foi criado para um curso na Udemy, sendo assim, o mesmo deve ser usado em junção com o curso, para maior desempenho. Uma versão presencial também foi lançada, estamos esperando os alunos para começar. Aqui.

SIMON HOLMES; CLIVE HARBER. Getting MEAN WITH MONGO, EXPRESS, ANGULAR, AND NODE. SECOND EDITION. Manning Shelter Island. 2019 by Manning Publications Co. Vai ser chamado de Simon&Cliver (2019).
Dependências
Apesar do curso ser sobre Mongoose, o Mongoose trabalha como suporte para a interação entre o MongoDB e Express (Nodej.s).
IMP. certifique-se de que você tem o MongoDB e Node.js instalados.
Vamos usar o npm como instalador e gerenciador de pacotes. Uma alternativa seria o yarn. Com exceção de diferenças iniciais, quando o yarn foi lançado, ou quando o usamos React, os dois gerenciadores de pacotes parecem o mesmo. Eu, pessoalmente, salve casos pontuais, não vejo a diferença.
Crie um package.json, antes de instalar o Mongoose, isso vai ajudar depois a gerenciar tudo.
Agora, instala o Mongoose! 😀😀
Seu arquivo package.json deve ter o seguinte formado, para efeito de clareza:
Primeiro exemplo, simples: salvando os gatos para compartilhar no WhatsApp
Vamos criar uma aplicação que salva gatos🐱🐱🐱, perfeito para compartilhar no WhatsApp!😂😂😂 Gatinhos peludos e com olhos grandes.
Preparação inicial
Nosso primeiro esquema
Vamos fazer nosso primeiro esquema, não me refiro a achar uma forma de ganhar vantagens nos outros 😂😂😂.
MongoDB é um banco de dados não relacional (NoSQL). Pode-se fazer qualquer coisa no sentido de formato, esqueça o Excel e comece a pensar orientado a objetos. Você pode salvar no mesmo espaço um gato com 3 patas e um gato com duas, um gato que tem pedigree, e outro que não tem, um gato que tem dono, e outro que não tem. Por agora, não vou entrar nos méritos dessa nova forma de guardar informação, somente aceite que existem vantagens, e desvantagens.... no mundo da programação se diz "no free lunch".
Estamos dizendo para o Mongoose que os gatos fofinhos precisam de um nome.
Agora precisamos dizer para o Mongoose: "salva aí pô!". Em linguagem do Mongoose:
Isso cria um esquema que pode inclusive ser acessado de outras partes da aplicação, como uma variável global. Legal não?!🙃 Calma aí que o Brasil ainda é nosso, vamos usar isso em combate no futuro!
Finalmente, fechamos o ciclo:
Isso fecha o ciclo.
Nosso primeiro método
Para mim, como programador Java, com muito orgulho, adorei essa funcionalidade. Basicamente, pode-se criar métodos para manipular cada campo, or "path" usando a linguagem do Mongo.
Caso esteja seguindo por aqui, antes da compilação do esquema, coloque:
Depois da compilação do esquema, coloque:
Isso vai imprimir a mensagem "Meow name is fluffy".
Nosso primeiro teste
Para os testes, vamos usar uma biblioteca npm chamada de Jest.
Testando a saída do esquema
Lembra que imprimimos a saída do esquema? para testarmos se havia realmente salvado o nome do gato no esquema?
Aquilo que fizemos foi um teste, "meia boca"😂😂😂, mas foi. E se criássemos um teste que simplesmente diria "passou" ou "não passou". Isso pode ser interpretado facilmente, além de poder ser automatizado em processos de deploys.
Vamos testar isso em TDD! O que vamos fazer é conhecido como teste de unidade, ou unit test em inglês. Nesse tipo de teste, estamos testando a menor unidade de código possível. O oposto seria teste de integração, ou integration test.
Instalando o Jest
Criando nosso arquivo para teste
Geralmente, o arquivo de teste leva o mesmo nome do arquivo que será testado +.test.js
Isso cria nosso primeiro teste com Jest. Isso faz o mesmo que foi feito com console.log, exceto que:
O teste é automatizado, pode ser facilmente interpretado tanto por outros programadores quanto por sistemas automatizados de deploy;
O teste não interfere com o código, enchendo de console.log, que depois precisamos lembrar de remover;
O teste não ativa nada além do que está sendo testando, como no caso de testar os esquemas do Mongoose que vamos fazer no futuro.
O teste foi um sucesso! Agora tente testar se o Mongoose aceita o seguinte para criar o documento:
Testando nosso primeiro método
Como estamos começando, esquentando os motores, o teste que vamos fazer é simples, contudo, o Jest tem muito mais, como spy, mock...ver documentação do Jest. Vamos cobrir neste curso somente o relacionado ao Mongoose, que é o foco do curso, e mesmo assim, não pretendo ser exaustivo.
Adicione o seguinte ao seu arquivo de teste:
O teste vai falhar! Eu sei que isso incomoda, contudo, faz parte do processo do TDD. Antes de continuar, porque está falhando?? qual a forma mais simples de se resolver isso?
Para passar, somente adicione isso antes de compilar seu esquema Mongoose, no arquivo de definição do esquema:
Nosso teste passou. Sem querer ser estraga momentos, esse foi fácil!! Conseguimos acertar de primeiras. Em outros cenários, será necessário refazer os códigos mais de uma vez.

Salvando nosso primeiro documento
Esse código salva o documento no Mongoose.
Mockando o método save do Mongoose usando mockingoose

Nosso próximo teste é sobre o ID devolvido.
Last updated
Was this helpful?