CQRS com NestJS e TypeORM

  Рет қаралды 3,592

PhillCode

PhillCode

Күн бұрын

Пікірлер: 37
@ricardobarbosa3966
@ricardobarbosa3966 Күн бұрын
Eu estava desenvolvendo um microservice com o Nestjs, do jeito mais tradicional sabe como é ficou tudo muito embolado, funcinando mas assim muitas coisa no mesmo lugar difícil de visualizar e quanto mais coisas fui fazendo foi crescendo. Quando assisti o seu vídeo refatorei tudo, ficou show. Foi perder para ganhar, já tinha investido uns 15 dias direto. Como esse processo te inspira apliquei TDD foi interessante ir percebendo cada detalhe da implementação do CQRS. Agradeço por ter compartilhado seu conhecimento, foi importante para o meu projeto. Valeu mesmo :)
@nathansantos8384
@nathansantos8384 Ай бұрын
Conteúdo ótimo!
@PhillCode
@PhillCode Ай бұрын
Obrigado Nathan!
@wagnersillvaa
@wagnersillvaa 9 ай бұрын
Oloco, muito bom!!!
@danrlleimiranda3265
@danrlleimiranda3265 5 ай бұрын
Vídeo muito bom e direto ao ponto, difícil encontrar por aqui. um tutorial implementando CQRS do nestjs com DDD seria incrível.
@PhillCode
@PhillCode 5 ай бұрын
Obrigado, Danrllei 🤝 Vou fazer um sobre DDD sim, e penso até que serão alguns vídeos dedicados ao assunto, pq DDD de verdade é um negócio que exige profundidade, se não for pra fazer apenas um "DDD-light" né... mas eu sou fã de DDD, vou fazer sim :) valeu pelo incentivo!
@danrlleimiranda3265
@danrlleimiranda3265 5 ай бұрын
@@PhillCode Boaaa, aí sim!
@Diasdhiego
@Diasdhiego 9 ай бұрын
Já pode lançar o curso Phill, to com o cartão na mão 😆 Que didatica fantástica! Rapido, direto e objetivo
@PhillCode
@PhillCode 9 ай бұрын
Hehe, aí sim hein! 😅 Vou fazer uma séria completa de NestJS "na faixa" pra galera, e aí depois a gente pensa num conteúdo mais avançado pra lançar como curso. Obrigado pela força, Dias!
@lourivanrodrigues2879
@lourivanrodrigues2879 3 ай бұрын
me candidatando pra vagas junior como desenvolvedor acabei me deparando com mais essa sigla, achei muito legal a arquitetura e meio estranho escrever a própria query pra ser executada, fiquei pensado se em algum caso esse tipo de abordagem seria melhor que usar um graphql em todo caso é mais um aprendizado e vou voltar aqui sempre que precisar implementar esse tipo de arquitetura.
@PhillCode
@PhillCode 3 ай бұрын
Fala aí Lourivan, bom demais? Optei por escrever SQL direto em vez de usar o repositório ou query builder do TypeORM principalmente por performance e controle. Fazer consultas manuais é uma prática comum, porque permite otimizar de forma mais precisa, especialmente quando vc está lidando com queries complexas que precisam ser bem eficientes, evitando o overhead que a abstração do ORM pode trazer. O graphQL cai no mesmo caso; ele traz conveniência ao custo de performance; sempre rola essa troca em programação. Então na verdade depende do objetivo da funcionalidade que você está desenvolvendo. Se quiser dar conveniência para quem consome uma API, graphQL é rei mesmo; agora, se estiver otimizando pra performance, nada vai bater uma query escrita manualmente para aproveitar os índices do banco de dados. Obrigado pelo comentário e por ter assistido ao vídeo. Sucesso!
@robertosouzadev
@robertosouzadev 8 ай бұрын
Muito bom Phill 🎉
@PhillCode
@PhillCode 6 ай бұрын
Valeu, Roberto!
@AndreLuiz-yy4db
@AndreLuiz-yy4db 6 ай бұрын
Opa Phill, conseguiria algum dia, fazer vídeo implementando DDD e o Event Sourcing ?
@PhillCode
@PhillCode 5 ай бұрын
Boa pedida! Eu pessoalmente acho Event Sourcing difícil de acertar, mas o DDD é uma grande paixão minha. Então aceito o desafio, só não posso prometer data. Valeu pela sugestão!
@gatogordo4131
@gatogordo4131 4 ай бұрын
Carai! Perfeito, tô trabalhando exatamente nisso.
@PhillCode
@PhillCode 3 ай бұрын
Bom demais @gatogordo, que bom que ajudou! Os próximos dois vídeos do canal (segunda dia 30/set e próxima segunda dia 7/out) vão dar mais dicas compatíveis com CQRS. Estou montando um projeto base que está crescendo pra usar CQRS, veja se é relevante pra vc. Valeu!
@nathanrib13
@nathanrib13 10 ай бұрын
Que aula!! 👏👏👏👏
@MasquetePlayer
@MasquetePlayer 9 ай бұрын
Muito bom🎉🎉
@George-vh5vi
@George-vh5vi 5 ай бұрын
Boa tarde mano, Excelente vídeo ! O que vc acha da utilização do Prisma ? Da para executar os mesmos ensinamentos dos seus vídeos ?
@PhillCode
@PhillCode 5 ай бұрын
Fala aí George, obrigado! Eu acho super válido utilizar o Prisma, ou qualquer outro ORM que você domine e atenda às suas necessidades. Eu uso o TypeORM pelo mesmo motivo: ele atende às minhas necessidades e sei como usá-lo; não vejo motivo para me aprofundar em outro ORM que, grosso modo, faz a mesma coisa, ainda mais sabendo que tem tanta coisa ainda pra estudar 😅 Mas reforço: se ele te atende e você manja, continue com ele, vai dar certo.
@andreluisferreira
@andreluisferreira 10 ай бұрын
✍👏👏👏👏👏 TOP D+
@MrFlaviodouglas
@MrFlaviodouglas 7 ай бұрын
Parabéns pelo conteúdo excelente! Tenho uma dúvida sobre a organização do código. Gosto da ideia de agrupar todos os recursos relacionados em um mesmo lugar, como você faz. Mas como você lida com situações em que outras queries precisam de um recurso específico, como o employee.dto, por exemplo?
@PhillCode
@PhillCode 7 ай бұрын
Fala Flavio, ótima pergunta! Eu costumo começar colocando o DTO junto com a própria query e, conforme vai sendo necessário, vou movendo ele gradativamente para níveis mais externos na estrutura. Acho que a estrutura de arquivos e pastas do projeto não deve ser rígida; ela deve evoluir conforme o projeto cresce e à medida que nosso entendimento sobre o problema ou negócio que estamos resolvendo também evolui. Por exemplo, no início eu colocaria a classe de DTO no mesmo arquivo da query, dependendo do tamanho do projeto e da equipe. Depois, poderia mover para um arquivo ".dto.ts" dentro da pasta /employees/queries. Mais adiante, pode ser interessante criar uma pasta /employees/dtos se você tiver muitos DTOs compartilhados dentro do contexto de employees. E, por fim, pode acabar em uma pasta /shared ou /common, acessada pelo contexto de employees e outros, conforme a necessidade. Uma coisa importante é tomar cuidado com o acoplamento. É péssimo para o projeto quando você começa a adicionar propriedades ao DTO que não fazem sentido para todas as queries/contextos que o usam. Por exemplo, digamos que o DTO começa com id e name. Você compartilha ele, e depois adiciona um dateOfBirth: Date que só faz sentido para algumas queries. Então você deixa dateOfBirth como Date | null. Mas atenção: uma coisa é deixar algo como nullable porque o dado é usado em todas as queries mas pode ser null, e outra coisa é deixar null porque só algumas queries precisam dele. Quando chega nesse nível de acoplamento, é melhor não compartilhar. Prefira duplicar código a criar um acoplamento desnecessário, que só vai te trazer dor de cabeça no futuro. Espero que isso ajude! Abraço!
@alexsantoss996
@alexsantoss996 9 ай бұрын
Faz um vídeo realizado upload de imagem no firebase, não tem nenhum vídeo que mostra como faz upload para firebase usando Nestjs
@PhillCode
@PhillCode 9 ай бұрын
Fala aí Alex! Dica anotada, meu caro! Vamos chegar no upload em breve. Nunca fiz upload pro Firebase, mas descubro e te conto! hehe
@alexsantoss996
@alexsantoss996 9 ай бұрын
@@PhillCode consegui realizar o upload , é facil depois que nós descobri rsrsr. Depois de 3 dias batendo cabeça eu consegui
@rockNbrain
@rockNbrain 8 ай бұрын
Fala Phill, tá sumido mestre? Tudo bem por aí? Cara esse mês entrei numa startup dos USA pra trampar como fullstack e lá eles usam Nestjs no backend ... estou até retornando pra ver esses vídeos aqui da sua série... mande notícias, valeuu
@PhillCode
@PhillCode 8 ай бұрын
Fala aí Rock, tudo bom? Obrigado demais pela mensagem, man 👊 tá tudo certo sim; passei um período com uma gripe forte, o bicho pegou, mas agora estou de volta. Tem uma questão de conciliar tempo do trabalho com o canal, afinal eu faço os vídeos no meu tempo livre, muitas vezes no fim de semana, e quando a coisa aperta no trabalho o canal sofre, hehe, mas vamos aí, a ideia é continuar.
@PhillCode
@PhillCode 8 ай бұрын
E que legal que você está usando NestJS no trabalho. Se topar, me add no linked-in e a gente marca um papo qq dia desses pra trocar experiências. Sucesso pra você no novo desafio!
@rockNbrain
@rockNbrain 8 ай бұрын
@@PhillCode show de bola mestre .... acabei de te enviar o convite no LinkedIn.... sucesso no serviço e no canal !!
@princehrb
@princehrb 8 ай бұрын
da pra fazer CQRS com o Nodejs Express?
@PhillCode
@PhillCode 8 ай бұрын
Dá sim, com certeza, mas vai dar um certo trabalho, porque o ExpressJS não dá suporte nativo pro CQRS assim como o NestJS. Você vai precisar estruturar tudo manualmente. Dá uma olhada em pacotes npm como cqrs-domain pra gerenciar comandos e eventos de domínio, e o cqrs-lite pra um framework CQRS mais leve. Como opinião pessoal, eu considero o NodeJS puro ou o ExpressJS bons para projetos pequenos e sem muita complexidade; eles são leves e não te direcionam nem te forçam a fazer as coisas de uma forma específica. Pra projetos grandes e/ou complexos, eu acho ruim porque você perde produtividade ou perde em boas práticas, porque você tem que implementar muita coisa manualmente, ou conhecer bem os pacotes que ajudam na implementação que quer fazer, e se não estiver bem afiado nos padrões que quer aplicar, o risco de meter o pé pelas mãos é grande. Foi por isso que virei fã do NestJS. Ele é opinionado e traz muita coisa pronta; isso tem seus pontos fracos, mas não se discute produtividade. Você voa!
@PhillCode
@PhillCode 8 ай бұрын
Resolvi complementar a resposta pra dizer o seguinte: pra todo e qualquer padrão ou "boa prática", é sempre possível (e recomendado) você entender bem qual é a FILOSOFIA do padrão. Qual problema ele resolve, por que o problema aparece, e como a solução foi estruturada. A partir disso, você vai conseguir (re)implementar uma versão do padrão que seja apropriada para o seu caso de uso específico. De forma bem simples, se você implementar cada query e comando numa classe separada, implementando uma determinada interface ou classe base, e chamar essa classe no seu controller, você já vai chegar no mesmo lugar do que eu apresentei no vídeo, sem complicar e sem instalar nenhum pacote. Por isso reforço: é importante entender bem qual problema você está tentando resolver e qual parte do padrão resolve isso; daí fica fácil aplicar.
@princehrb
@princehrb 8 ай бұрын
@@PhillCode que legal, eu ja estou proximo de focar no estudo do Nest. pelo visto vai ser muito util e produtivo. Eu estudei bastante o node.js por muito tempo e junto com isso ainda tive que passar muito tempo estudando javascript e uma marretada de outras coisas relacionadas a frontend com react, nextjs e etc... kkkk. Uma pergunta, com este Nest eu ja tenho classes prontas para fazer CQRS, Saga, e DDD, websocket e tudo isso ne? Vc tem cursos que ensina com contexto a essas tecnologias?
@iUmerFarooq
@iUmerFarooq 9 ай бұрын
Nit understand s single word 😢
@PhillCode
@PhillCode 8 ай бұрын
Hi! I'm sorry to hear that... but I think there's a lot of great content available in English and other languages already. So, I've chosen to focus on bringing some of that to Brazil, in Brazilian Portuguese. Perhaps in the future, I can explore providing translations or captions :)
Desacoplar Efeitos do Código Principal com Eventos no NestJS
17:24
Prisma vs TypeORM: Qual é o melhor ORM para o Node.js?
27:22
Waldemar Neto - Dev Lab
Рет қаралды 14 М.
99.9% IMPOSSIBLE
00:24
STORROR
Рет қаралды 31 МЛН
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН
How to Implement the CQRS Pattern in Clean Architecture (from scratch)
17:36
Is a REST API with CQRS Possible?
16:46
CodeOpinion
Рет қаралды 36 М.
Nest.js Microservices with NATS, SQL, and Docker
2:20:27
Anson the Developer
Рет қаралды 16 М.
Todo Dev JavaScript Precisa do TypeScript
18:34
Código Fonte TV
Рет қаралды 36 М.
The Right way to write Nest.js & Typescript clean-code - SOLID
17:55
Design Scalable Apps with CQRS and FastAPI (easy)
8:50
Eric Roby
Рет қаралды 3,3 М.
Criando um Projeto do Zero com Nest, TypeORM e Postgres
59:38
TecEdu4All
Рет қаралды 4 М.
Полная дорожная карта C# разработчика на платформе .NET
42:40
Александр Алексеев | Папочка Дотнета
Рет қаралды 2,7 М.
99.9% IMPOSSIBLE
00:24
STORROR
Рет қаралды 31 МЛН