Mongoose
Nesta página, de caráter mais teórico, vamos aprender sobre o Mongoose. De forma resumida: o Mongoose é uma biblioteca em JavaScript para se programar o MongoDB de dentro do Node,js.
Last updated
Nesta página, de caráter mais teórico, vamos aprender sobre o Mongoose. De forma resumida: o Mongoose é uma biblioteca em JavaScript para se programar o MongoDB de dentro do Node,js.
Last updated
De acordo com uma sondagem que fiz quando pensava em escrever um livro sobre MEAN stack, infelizmente não consegui achar o resultado para compartilhar com vocês, fiz no Facebook, em uma comunidade em inglês do MEAN stack, "programador não gosta de ler".
Infelizmente, acho isso uma pena😌😌 e realmente acho que deveriam ler mais. Um exemplo seria o TDD, que seria um nível de leitura, nesse caso, dos códigos. Eu também fico ansioso para ver os códigos rodando, mas coloquei na minha cabeça de programar que "a pressa é inimiga da perfeição".
Recentemente, tive de "enfrentar" meus supervisores de pós-doutoramento, sempre me apresando; desinstalei o WhatsApp para poder trabalhar, somente assim consegui avançar. Note que de forma alguma estou indo contra a ideia de Startups, nesse caso realmente a pressa pode ser melhor, mas seria uma pressa intencional nessa caso, como diz Steve Blank "get out of the building" 😂😂😂.
Tem uma discussão bem legal aqui, que tem haver com essa questão de "velocidade vs. qualidade": "🚀 DevTernity 2017: Ian Cooper - TDD, Where Did It All Go Wrong".
Adicionei como discussão continuada ao nosso curso um vídeo falando dessa palestra, do assunto de TDD vs. Startups, seriam ideias antagônicas?
Refiro-me a uma pressa sem necessidade, sem compromisso com algo, somente para terminar logo. Lembrei-me de uma imagem que infelizmente não salvei, vi no Facebook, achar isso vai ser pior do que achar algo no meu computador.
Basicamente, se comparavam um doutor com um programador: o programar pensava em desisti no primeiro obstáculo, ao passo que o doutorado se leva anos para se terminar.
"Ensinar programação é um desafio porque programação, como eu vejo é “10% de inspiração e 90% de transpiração.” Usando Thomas Edison como ponto de argumentação. Posso ensinar o básico. Como disse Cal Newport, professor do MIT em programação, em Deep Work, agora aprender virou o mais importante no mundo, em especial no mundo da #programação onde tudo muda muito rápido." fonte: meu perfil no Linkedin
Para os que gostam do conceito de startups, além do conteúdo desse curso, também estudei o conceito de startups no meu pós-doutoramento, com foco ao sistema de saúde. Ver Alguns insights em Startups em Healthcare.
Conversa à parte, vamos falar do Mongoose.
Mongoose foi criado pela mesma empresa do MongoDB. O objetivo do Mongoose é oferecer uma forma de se modelar os dados dentro da aplicação, sem necessariamente perder a flexibilidade do MongoDB.
"Mongoose cria uma forma direta, focada em esquemas, para se modelar os dados da sua aplicação. Isso inclui funções como tipos embutidos, validação, pedidos, e mais " [tradução livre]
Fonte: https://mongoosejs.com/
No contexto do Mongoose, modelagem de dados é quando se defini o que estará em um banco de dados, e como estará, ou seja, os pormenores. Você pode definir nesse processo informações como o tipo do dado, se é obrigatório, limites numéricos...fazemos isso no curso, contudo, de forma não exaustiva; a documentação oficial oferece muitos outros exemplos que tornariam o curso muito longo e com risco de se perder o foco. Uma das consequências desse processo, e fazemos isso no curso, é que o próprio Mongoose, usando o esquema, filtra o que será salvo. Considere um cenário de req.body
cheio de informações inúteis, somente o que bate com a modelagem será salvo.
Fazendo um spoiler, o NestJS agora vem com formas mas elegantes de se trabalhar com o req.body.
Ver aula 17 "Fazendo nosso primeiro teste com Jest, part 2" (35:42). Fiz um corte aqui.
Vamos usar a notação yy:xx para designar o ponto no vídeo que estamos nos referindo, onde yy é o minuto, e xx os segundos.
No esquema acima, declaramos para o Mongoose que queremos que os gatos tenham nome, somente isso.
Testamos no curso o cenário de tentarmos salvar a idade, isso falha!
Jest Matcher usado toBeUndefined()
Fonte aqui.
Facilidade na criação de conexões múltiplas. Isso facilita usar o fato de que o MongoDB é escalável horizontalmente;
Facilidade na criação de métodos personalizados para se manipular os atributos dos esquemas, abordado no curso;
Métodos embutidos para se facilitar atividades padrão como salvar;
Formas de se conectar diferentes documentos, ver o conceito de populate aqui;
Métodos embutidos para validação dos atributos e sistema de mensagens que avisam de erros;
Outros;
"MongoDB é uma excelente escolha para muitas aplicações web porque oferece o balanço entre velocidade dos bancos de dados puramente baseados em documentos e e o poder de bancos de dados relacionais" [tradução livre] Simon&Cliver (2019).
É isso aí pessoal, a melhor forma de se aprender é colocando a mão na massa!! Bons estudos!