Build a REST API with Node.js, Express, TypeScript, MongoDB & Zod

  Рет қаралды 146,349

TomDoesTech

2 жыл бұрын

Repository: github.com/TomDoesTech/REST-API-Tutorial-Updated
❤️Host your applications and get 💰$100 credit (referral): m.do.co/c/1b74cb8c56f4
0:00 - Introduction
2:00 - API demo
5:45 - Code walk-through
8:20 - Bootstrap the application
26:00 - User registration
58:00 - Session Controller
1:43:38 - Product resource
📚 Concepts & technologies covered
- REST APIs
- JWTs & refresh tokens
- Node.js
- TypeScript
- MongoDB with Mongoose
- Request validation
🌎 Follow me here:
Discord: discord.gg/4ae2Esm6P7
Twitter: tomdoes_tech
Facebook: tomdoestech​
Instagram: tomdoestech​
TikTok: www.tiktok.com/@tomdoes_tech
☕ Buy me a coffee: www.buymeacoffee.com/tomn

Пікірлер: 435
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Learn how to test the REST API with the next video on the series: kzbin.info/www/bejne/qGavYouIj8Z2iJI
@francisabonyi7115
@francisabonyi7115 2 жыл бұрын
Thank so much for your effort, your courses are awesome.. Can you please add video for Redis cache on this video or another built project. Thanks
@ravenMK_
@ravenMK_ 2 жыл бұрын
Man I love you already!
@kittisakphatchaiphongsa3177
@kittisakphatchaiphongsa3177 2 жыл бұрын
@@francisabonyi7115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@Islam_Eliwa
@Islam_Eliwa 2 жыл бұрын
you are amazing dude, thanks a lot
@TomDoesTech
@TomDoesTech 2 жыл бұрын
​@@stevechude3730 my videos are not for beginners. If you don't know hwo to set up Mongo locally, this video is not for you. Please consider how rude you're being to people that spend hours making videos for free.
@oz4549
@oz4549 9 ай бұрын
I have said it before and I will say it again. This tutorial is so good that I got an internship. However, do not just copy and paste what he did here. Take this and build on it or build something different using the practices in this tutorial, connect a frontend to show something, or integrate other things if you need. When he said "it will make any CTO weak at their knees", he was not lying. But really understand what he's trying to teach here and I know there are issues with some packages being outdated but go and research, hell, use a different tool or whatever. That's how you get good. I will never be thankful enough to him for this tutorial, I learned a great deal of stuff. Thank you man!
@TomDoesTech
@TomDoesTech 9 ай бұрын
This advice will land you a job, guaranteed
@minhnghia107
@minhnghia107 6 ай бұрын
yah 2 years ago but still gold. I'm not going to intern yet but through this tutorial, my skills have improved. I decide to watch the tutorial and then redo it by myself :D
@ochogwuemmy8171
@ochogwuemmy8171 4 ай бұрын
Great. But how do users login as there no route for login
@aarondiaz2506
@aarondiaz2506 11 ай бұрын
super high quality content! I really like that you explain things like currying on the go, i mean you don't let anything unexplained on your code, thank you.
@thiagocrux
@thiagocrux 2 жыл бұрын
It's rare to find people who provide us with as much content as you do and even less with this quality. This video was immensely rich and I could learn a lot from it. Thanks, Tom!
@truthalwaysprevails662
@truthalwaysprevails662 2 жыл бұрын
This is not to take anything away from Tom and his wonderful tutorials, the one thing I have began to observe is that lesser the subscriber count the better is the quality of the tutorial. Definitely not every time but generally
@ravenMK_
@ravenMK_ 2 жыл бұрын
Just exactly what I'm looking for and then there is you. I was meant to find you. Perfect timing. Thank you for this
@osanyinbiyusuf7308
@osanyinbiyusuf7308 Жыл бұрын
I cant believe i have access to this kinda tutorial for free....the amount of knowledge passed here is quite overwhelming.....I appreciate you so much.....your tutorial has great impact in my life...Many thanks.
@johnwick97t764
@johnwick97t764 Жыл бұрын
These contents are way better and productive than other so call "paid courses". Thank you so much for your service
@nonybrighto
@nonybrighto 3 ай бұрын
Migrating from js to typescript for express and I am really glad I found this! Wish I found it a little bit earlier. Would have saved me the stress of digging around for some things I know so far! Thanks a lot! You deserve a cofee!!
@AesSedai2020
@AesSedai2020 Ай бұрын
Can I say I absolutely love your tutorials, I am learning so much! Thank you :)
@hasanerken9604
@hasanerken9604 2 жыл бұрын
This is a very good and thorough explanation of how to implement TS on REST Api. Great video. I hope we will see a video on Fastify as well. Thanks Tom, for this great tutorial.
@reknine
@reknine 2 жыл бұрын
Very nice structure in the project! I think I'll adapt this. Great stuff!
@akash-kumar737
@akash-kumar737 2 жыл бұрын
Appreciate that you redirected to this new and updated video.
@robertholl8914
@robertholl8914 2 жыл бұрын
Good tutorial! A little tricky coming from more refined structured API environments to Express but made the experience as native and 'easy' as possible. Thanks!
@axelpaul8988
@axelpaul8988 2 жыл бұрын
I love your channel and the tutorials you created. They are very helpful! It would be great if you could zoom in vscode with some software for zooming videos so it is easier to understand what's going on since I usually divide my screen in two pieces. One is the video and the other one is my IDE and when I do this, the characters from your IDE are pretty small. Overall, I love the channel and I'm very happy that you are getting more subscribers every day.
@030426101993
@030426101993 2 жыл бұрын
Just want to send a big Thank to you, Tom. I have learned a lot from this series.
@pankaj_9998
@pankaj_9998 7 ай бұрын
This channel is gold for nodejs reactjs devs. Thanks so much such valuable content 🙂
@KennedyOtisNyaga
@KennedyOtisNyaga Жыл бұрын
Very educative and thanks for taking time to make these production level videos. Also another tip on omitting the password from response... one can add select: false in the model level. This will automatically omit the password field or any other field with select: false.
@kimshares1487
@kimshares1487 2 жыл бұрын
Thankyou I got a job and this is what I am using to learn the TypeScript perspective of Express. Kudos!
@meetsamseen
@meetsamseen 2 жыл бұрын
Thank you for this awesome tutorial Tom!
@HighGamingDifficulty
@HighGamingDifficulty 2 жыл бұрын
Love your tutorials, I am a beginner with TypeScript, it helps a lot, thank you!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Great to hear!
@Plaswin
@Plaswin Жыл бұрын
Thank you so much, love how clean your code looks
@benjaminiduwe2958
@benjaminiduwe2958 2 жыл бұрын
Great video, i really enjoy your series.
@MiguelRodriguez-ng9wc
@MiguelRodriguez-ng9wc 2 жыл бұрын
Thank you for this tutorial, it's amazing c:!.
@Creamworks
@Creamworks 2 жыл бұрын
Thank you very much for this, amazing tutorial ❤
@adriantworek1057
@adriantworek1057 2 жыл бұрын
You do awesome job Tom providing such a robust content for free! Would like to see another part with creating UI, handling all these sessions etc. on the client side, preferably with Redux Toolkit or Context API.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thanks Adrian, I am working on the UI part. I'm going to keep the library use to a minimum because it could get confusing for anyone that doesn't know how that library works.
@belkocik
@belkocik Жыл бұрын
I love your tutorials!
@ayushpaharia5452
@ayushpaharia5452 2 жыл бұрын
Would love to see Prometheus, caddy+docker and Jest testing. Really got into typescript watching your videos. Please keep creating this lovely content!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I'm working on testing with Jets now, it will be out nest week, Prometheus should be quick so I will do that too :)
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I also have a video about caddy + docker here: kzbin.info/www/bejne/aKCxpJ2vlqh8qKs
@jean-marcmockel7848
@jean-marcmockel7848 2 жыл бұрын
Hey man! Outstanding value in these two hours. Thanks a lot for putting in the work. Can't wait to start the other videos in that playlist. One quick feedback from my side: You're kinda rushing through the tutorial and it's sometimes hard to follow in that pace. It would be great if you could explain certain things a little bit better like the overall architecture of the application and why you are doing certain things. I think it's always great to have the big picture from the beginning on. Keep up the great work!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thank you for the feedback. It's difficult to tell what pace the video should be because it really depends on how much experience the viewer has I think.
@jean-marcmockel7848
@jean-marcmockel7848 2 жыл бұрын
@@TomDoesTech Yeah I know what you mean. "Advanced" or "Beginner" is always subjective of course and a question what kind of audience you'd like to serve with your videos. More beginners or more advanced devs that might get bored out. But nonetheless, your content stays on a high quality! Thanks for your efforts, Tom.
@mssafy2592
@mssafy2592 6 ай бұрын
man this was a master piece !
@rafayzia4180
@rafayzia4180 2 жыл бұрын
Amazing content! keep em coming :)
@nicklansbury3166
@nicklansbury3166 2 жыл бұрын
I love how you _almost_ stopped yourself laughing at your CTO comment right at the beginning. Thanks for putting together what will no doubt be another excellent tutorial. Keep 'em coming.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I thought about that joke for way too long.
@IkraamDev
@IkraamDev 2 жыл бұрын
Very nice. Hopefully I’ll do this tutorial in the weekend whilst practising Neovim at the same time!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Never heard of Neovim, I'm going to download it and have a play around with it. let me know if you have any questions :)
@rajeev3147
@rajeev3147 2 жыл бұрын
Dude you are doing God's work. Highly appriciated
@BarakAlmog
@BarakAlmog 5 ай бұрын
Great tutorial! Thanks so much.
@jerryzhang7022
@jerryzhang7022 2 жыл бұрын
Thanks bro. Really nice tutorial.
@ThisClark
@ThisClark 2 жыл бұрын
If you got stuck with 403 forbidden in Postman around 3:30 in the video, set environment variables and attach the environment to the current workspace. Here's a one minute demo of me going from 403 forbidden to 200 ok by setting the environment properly: kzbin.info/www/bejne/iYO7aXtthLKGZsU
@siyanbolafaruk3005
@siyanbolafaruk3005 Жыл бұрын
Thank you for creating this
@adrianogonzalez5269
@adrianogonzalez5269 2 жыл бұрын
Great video! loved to see a video on Apollo GraphQL
@sergiyrudenko905
@sergiyrudenko905 2 жыл бұрын
Thank you Tom!!! Great lesson! Please make next lesson about deploying docker container on linux server!!!
@kiefer8101
@kiefer8101 Жыл бұрын
Great video! More Express, TS, Prisma content pls!
@AdityaKumar-gl1to
@AdityaKumar-gl1to 2 жыл бұрын
Got what I needed !!!
@umarmuhammadzakari4585
@umarmuhammadzakari4585 2 жыл бұрын
Thank you so much for the video.
@vinayaknaik9884
@vinayaknaik9884 2 жыл бұрын
You made my day♥
@enogratechnologies1896
@enogratechnologies1896 4 ай бұрын
Great tutorial. Thanks.
@techOtuts
@techOtuts 2 жыл бұрын
Thanks for the wonderful tutorial. Please make a video on how to securely handle refresh token and access token on the frontend with react. I need this for a job please
@rohitpandit3267
@rohitpandit3267 2 жыл бұрын
thanks for this awesome content
@wzup23
@wzup23 6 күн бұрын
Whoa didn't know that I can use postman like this. I always manually type my input whenever I test O_O. Yes, horrible! Thanks for this dude! Will be checking on your other videos.
@maurolsmoura
@maurolsmoura 2 жыл бұрын
Excellent tutorial, thanks a lot
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Glad it was helpful!
@irfanhariths
@irfanhariths 2 жыл бұрын
Nice tutorial ! Suggestion for next video : Building a REST with prisma and mysql
@clutchmadness
@clutchmadness 2 жыл бұрын
I think this is the first time in my 'young' career that I've seen routes being handled like that. It's beautiful.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
So glad you like it :)
@christopherugochukwu3517
@christopherugochukwu3517 Жыл бұрын
@@TomDoesTech when i hit the healthcheck route I get an error that says "unable to connect to remote server". but the console shows app is running on the designated port
@TomDoesTech
@TomDoesTech Жыл бұрын
@@christopherugochukwu3517 are you using Mongo Atlas or something? What is the "remote server"?
@zilvinas5130
@zilvinas5130 2 жыл бұрын
Overal great tutorial, one improvement I would suggest is putting more attention in small mistakes you make and fix during speed-up. Followed halfway through the tutorial to get my project's template to where I feel comfortable to develop it on my own. Huge thanks for for providing great starting point with a manageable folder structure and other methodologies!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thank you for the feedback, that's really helpful! When I make those mistakes, I stop talking while I try figure it out so I need to learn to keep talking and explain the issue.
@stevereid636
@stevereid636 2 жыл бұрын
I agree, this is great tutorial, but you need to make sure to let us know when you’ve made a correction that been edited out. 🙏🏾 Otherwise excellent work👍🏾
@gotmorris
@gotmorris 2 жыл бұрын
I would like to see more about testing the API. Thanks
@dammyola
@dammyola 2 жыл бұрын
Me as well
@alanmejia6375
@alanmejia6375 2 жыл бұрын
You are great! Please make a video with full testing and React with TS. Well, Docker too! jaja
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thanks! I am working on the testing video now :)
@yassinebenlahbib1058
@yassinebenlahbib1058 2 жыл бұрын
thank you so much ❤️
@geuxor
@geuxor 2 жыл бұрын
Thanks for a great lesson! Would be great to see a repo for the same but with sequelize/postgres instead of mongoose :) Do you maybe have anything already?
@Luka_brx
@Luka_brx Жыл бұрын
TOM IS MVP
@sohamvishwas6795
@sohamvishwas6795 2 ай бұрын
Thank You😇
@francisabonyi7115
@francisabonyi7115 2 жыл бұрын
Your content is so amazing, please can make feature for roles and permission. thanks
@vinayaknaik9884
@vinayaknaik9884 2 жыл бұрын
Thank you,
@tenzl
@tenzl Жыл бұрын
Hi Tom thanks for the video. Just a question on 1:35:18 why are we checking to see if there is no "_id" field in the decoded object? wouldn't it always be there if verifyJwt returns the decoded object?
@julianvogel1277
@julianvogel1277 2 жыл бұрын
Man I love ur coding style =D
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thank you so much :)
@julianvogel1277
@julianvogel1277 2 жыл бұрын
@@TomDoesTech ur welcome =) Just one little question. When you call the createUserSessionHandler you are using the same private key for the accessToken and refreshToken. Isn't that a problem? Or are you changing that later. Cant't wait to watch the next videos of that series =D
@politeboy2996
@politeboy2996 2 жыл бұрын
Amazing codding standard
@eissa178
@eissa178 2 жыл бұрын
It would be top if you can make a new video, adding a new endpoint but this time using a TDD approach. This way, we could learn how an experienced developer writes code using TDD.
@nelsonfleig5024
@nelsonfleig5024 2 жыл бұрын
Thank you so much Tom. This is excellente! What do you think about recreating this with Type-Graphql and Apollo? Seems to be a great stack for building modern graphql apps with Typescript.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Yeah, I really like TypeGraphQL and have used it a fair bit so I think I will make a tutorial on it.
@johnapple3471
@johnapple3471 2 жыл бұрын
You have a very soothing voice
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Oh wow, thank you
@devsami
@devsami 2 жыл бұрын
Hi, I watched your previous vidoe on the same, I liked this video far more than the previous, because in this session, we end user get to see and comprehend the code written, and it's not overwhelming when you explain by writing them. I was practicing it alongside, although I am getting type errors like "module mongoose has no exported member DocuemtDefinition" Can you please help me with that? Also, Is there another way to use the interface instead Omitting each field individually
@randomcell708
@randomcell708 2 жыл бұрын
Hi Tom. great conent. I have learnt so much. Would you consider building out a React frontend for this, as it's always nice to produce something more visual to show as an end result
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I did that video kzbin.info/www/bejne/pYTdY2amhaejfLs&ab_channel=TomDoesTech
@haans8
@haans8 2 жыл бұрын
I'm not sure if it's necessary to explicitly give type to the request and response on the route 2nd argument, because I'm sure that it's already inferred, CMIIW. Except if you need a specific property on the body or query.
@JeffLevyForPresident
@JeffLevyForPresident 2 жыл бұрын
Senior dev here. Like. Senior. Anyway, I've been mucking about for a few months porting an ancient (most of you were in grammar school when line 1 was laid down) PHP project over to Node. I've got quite a good grasp on node, but as we programmers are bent to do, we strive for different, better. I've never been quite satisfied with my port of this project. I decided to scrap what I think I know, and start anew. This 2-hour video is solid gold. A great, fresh, modern approach. Well done. Great structure, great pacing. Whilst not the audience you intended for this video, I find that I am able to easily pause the video, and consider my implementation vs. yours, and adapt my system in near-realtime. Outstanding work.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I'm so glad you liked it! I think your approach is the best way to get the most out of the video. I try not to be too prescriptive in my videos. there are often better ways to do it. My goal is usually to give a suggestion and hope that the viewer pauses it and considers if they could improve on it. Thanks again for your kind words, I really appreciate it.
@irahazda
@irahazda Жыл бұрын
What are we supposed to set as accessTokenPrivateKey, accessTokenPublicKey, refreshTokenPrivateKey and refreshTokenPublicKey in the config/default.ts? I keep getting an error saying Configuration property "mykey" is not defined
@samuelsilalahi4060
@samuelsilalahi4060 2 жыл бұрын
Great tutorial. Bu I have questions. - Can you tell me how to upload files with this tutorial? - Can we validate the file with zod? Thank you
@imigi427
@imigi427 Жыл бұрын
If someone had problem with: 'routines: get_header_and_data: bad end line', just check if your IDE do not add extra line while saving your document. In my case, 'prettier' extension added extra spaces on the beginng of every line. After correcting that I got my token keys. BTW. Thank You TomDoesTech for your yt tutorial ts with my node server. And your video is god blessing
@alright83
@alright83 2 жыл бұрын
[ @1:20:39 of your video] Hi Tom, what's the difference in storing your user object in res.locals.user and req.user?
@eminothedon716
@eminothedon716 2 жыл бұрын
Can you explain to me why we're saving sessions to the db i don't get the concept ? is it to verify that we issued the tokens not someone else ??
@swayamnayak7134
@swayamnayak7134 2 жыл бұрын
Great video tom !! Can you please make a video on how to use typeorm with this server to interact with a sql database..
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Thanks, who's Tim?
@swayamnayak7134
@swayamnayak7134 2 жыл бұрын
@@TomDoesTech ohh sorry i mispelled tom as tim 😅
@ivankraev4264
@ivankraev4264 2 жыл бұрын
Hey, can u explane how is "this as UserDocument" working ? I cant figure out
@knumchoke
@knumchoke 2 жыл бұрын
I am new to javascript and typescript, can you recomend vscode extensions you were using in this project.
@FudgeRaco
@FudgeRaco 2 жыл бұрын
Liked! Subscribed! Just wondering why you use Zod instead of Joi?
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Zod has better TS support and I'm more familiar with it
@vladimirvucetic4466
@vladimirvucetic4466 2 жыл бұрын
Hi thank you for great series. With this session/refresh token implementation should we care about stealing refresh token? Do you think that implementing refresh token rotation is overhead with your approach? Thanks
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Firstly, I'm not a security expert, I'm just demonstrating concepts here so if you're working with a lot of user data, make sure you have someone who understands security in-depth look at your code. Yeah, you should be worried about someone stealing the refresh token because if they have that, they can get an access token and then have access to the system. I would spend my effort trying to prevent the token from being stolen before I spend time reducing the blast radius in the event it does get stolen. So, what I mean by that is make sure you figure out how your application could be vulnerable to XSS attacks and reduce those threats. As for rotating refresh tokens. The issue is that you have no way to invalidate the refresh token without changing the public and private key pair. A lot of large companies will rotate their keys, but getting this to work without impacting the user experience would be challenging.
@sreekumarmenon
@sreekumarmenon 2 жыл бұрын
Awsome videos! suggestion for next video - Build a REST API with Node.js, Express, TypeScript, Prisma & Postgres.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I did something very similar to this but I used Fastify instead of Express.
@sreekumarmenon
@sreekumarmenon 2 жыл бұрын
@@TomDoesTech Awesone,, could you share the link pls
@TomDoesTech
@TomDoesTech 2 жыл бұрын
@@sreekumarmenon kzbin.info/www/bejne/gn7SfnuGaZlgrq8
@sreekumarmenon
@sreekumarmenon 2 жыл бұрын
@@TomDoesTech Thanks I like the folder structuree in that video better, controller,service,schema all in same folder grouped by feauture! question why pick zod over yup ?
@TomDoesTech
@TomDoesTech 2 жыл бұрын
@@sreekumarmenon Zod has better TS support than Yup
@janxavier8264
@janxavier8264 Жыл бұрын
"Make any CTO weak at the knees" 😆
@farhanfauzan8355
@farhanfauzan8355 Жыл бұрын
may i ask Tom? how about the sessions that being valid all the time? like it was actually never revoked or deleted in this case? is it safe to let a valid session recorderd event thou the actual accesst token or refresh token when the session is created is long time ago already expired?
@andresbreuer
@andresbreuer Жыл бұрын
Beautiful Tutorial!!! LOVED IT!! Just one question... Why do you prefer to use the config file for variables instead of enviroment variables? Is that secure?
@TomDoesTech
@TomDoesTech Жыл бұрын
These 2 things aren't mutely exclusive. The con fig file has defaults which can be overwritten by env vars
@DeepakKumar-ze8ii
@DeepakKumar-ze8ii 2 жыл бұрын
Hi Tom, I have a request! Is it possible to divide the long video as playlist in future bcz completing this video in one go is not possible and thanks for making this awesome video!!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Sorry but longer videos do much better. I've done a few videos where they are in parts and they do significantly worse
@joaquinsuarez499
@joaquinsuarez499 2 жыл бұрын
Amazing video, but why don't use eslint?
@filipkajanovic1425
@filipkajanovic1425 5 ай бұрын
Hello there! First of all, I realy love your tutorial(s). I'd like to ask little bit deeper about session handling => We are making new session every time user logs in. In longer term i feel like it's lot of unnecessary data in db so my questions are => 1) Should we reuse users preivouse session, or is that bad approach? 2) Should we keep them or would it be better to have some middleware that would once in time delete or old sessions? Or delete users preivouse session every time he logs in...? 3) Can we use them for storing history of users behavior? (Add new variable to Sessions & have some middleware that would push log that variable every time some endpoint is called from that session) Thank you & hope you're doing well 🙂
@RaydenNnN
@RaydenNnN 2 жыл бұрын
just one tip, use status on your tutorials ;) forget to use 201 to create a new user, create sessions, etc
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Yup, good call!
@zackOverflow
@zackOverflow 2 жыл бұрын
This is awesome!!! thank you for this lesson. One request, can we make it a full stack app i.e. can we build a frontend to consume this API? thank you once again.
@TomDoesTech
@TomDoesTech 2 жыл бұрын
There is a UI part in this series if you want to check that out
@zackOverflow
@zackOverflow 2 жыл бұрын
@@TomDoesTech ok, thanks so much. Meanwhile, i'll like to point out that, both your terminal & your file EXPLORER cover more than half of the screen in this video, it would be nice if you minimize your terminal when not in use that way, the viewers can have a clear view of the code on the screen. Thank you, you are the best.
@5042DaMeatShoww
@5042DaMeatShoww 2 жыл бұрын
Am I doing something wrong if my connections connect and after a few disconnect? I'm having an issue with my /healthcheck returning the Error Cannot GET /healthcheck
@marcus_leon
@marcus_leon Жыл бұрын
1:40:15 reIssueAccessToken is returning string or false, change the "return false" inside reIssueAccessToken to return "" , just a quick fix but can be fixed in many other ways
@antoniosalzano5253
@antoniosalzano5253 2 жыл бұрын
export async function createProductHandler( req: Request, res: Response) {} Where can i read more about this filtering the request? I would like to understand more about this?
@akshatgupta1658
@akshatgupta1658 2 жыл бұрын
at 1:07:17 why are using spread operator like ...(options && options), an not simply ...options ? will in undefined case it produce error if we just use ...options?
@TomDoesTech
@TomDoesTech 2 жыл бұрын
Yeah if options is undefined and you try spread it, essentially your're saying ...undefined which isn't valid and it will throw. You can default options to an empty object and it will work, but I use the ...(options && options) syntax because it works for all data types
@RomainBARRAUD
@RomainBARRAUD 3 ай бұрын
I keep on receiving Error: secretOrPrivateKey must be an asymmetric key when using RS256. Has anyone faced the same?
@durveshparmar6775
@durveshparmar6775 Жыл бұрын
Hey that was great work and the one I was looking for... But I couldn't figure out how to generate refresh token private / public keys? is it same as access token private / public key process or different?
@TomDoesTech
@TomDoesTech Жыл бұрын
You can use the same or different keys, up to you. Probably better to use different keys but it's not that big of a deal
@Matiast9477
@Matiast9477 3 ай бұрын
If you're having problems with the pino logger config because of the deprecated prettyPrint prop import logger from "pino"; import dayjs from "dayjs"; const log = logger({ transport: { target: "pino-pretty", options: { colorize: true }, }, base: { pid: false, }, timestamp: () => `,"time":"${dayjs().format()}"`, }); export default log; this is the config
@improving_cow
@improving_cow 3 ай бұрын
THANKS BUDDY for this solution
@James-ud7ys
@James-ud7ys 2 жыл бұрын
Is there a reason to use the routes function instead of express.Router()? Traditionally, I've seen the Router method used but wanted to know your thoughts. Great vid!
@TomDoesTech
@TomDoesTech 2 жыл бұрын
It's just the way I'm used to doing it. I've used the express.Router() in another video
@gorutorot
@gorutorot 2 жыл бұрын
Hello, thanks for the tutorial! I'm currently stuck on the getting all of a users sessions part. im console loggin the accesstoken in deserialize user and it doesnt exist. I realized this is because when I create a session, the token is not getting stored in the request header. I dont notice anywhere in this tutorial where you are explicitly storing the token to req.headers.authorization. please help!
@bilkisuismail6096
@bilkisuismail6096 8 ай бұрын
same here, please did you get a way around this?
@sarcasticdna
@sarcasticdna 2 жыл бұрын
One good practice In Schema in usermodel add this field { ...something select:false } this will not return password unless we require by this method we can use less lodash to get it use .populate("password") in the end of query
@TomDoesTech
@TomDoesTech 2 жыл бұрын
That's awesome! Thanks for the tip.
@acdev972
@acdev972 2 жыл бұрын
awesome. @TomDoesTech you should pin that comment. Thank you for the great tutorial
@TomDoesTech
@TomDoesTech 2 жыл бұрын
@@acdev972 It doesn't work, or at least I can see it causing issues. If you do select false, it won't show up in the validation function.
@acdev972
@acdev972 2 жыл бұрын
@@TomDoesTech export async function validatePassword({ email, password }: { email: string; password: string }) { const user = await UserModel.findOne({ email }).populate("password"); if (!user) return false; const isValid = await user.comparePassword(password); if (!isValid) return false; return user.depopulate("password"); }
@acdev972
@acdev972 2 жыл бұрын
@@TomDoesTech the problem is that you need to "populate" the password in the findOne method from "mongoose" or it's undefined in the comparePassword instance method. see the fix above.
@jritzeku
@jritzeku 2 жыл бұрын
Is it standard to have a Service layer ? In other mvc examples, I've usually seen all those functionalities from the service layers inside the controllers. Great tutorial btw! Will be watching the unit testing in express video next in your channel .
@TomDoesTech
@TomDoesTech 2 жыл бұрын
I don't know if it's standard or now and I don't think it's useful to think about it like that. I think the question you should be asking is: "Does this make sense for my application and does it fit with the way I like to work?"
@jritzeku
@jritzeku 2 жыл бұрын
@@TomDoesTech thanks !
@adamsackfield589
@adamsackfield589 2 жыл бұрын
Hi loving the content. I’m having an error at the 51:00 mark with the user._id error is relating to can’t cast object to string.
@thiagoroberto7891
@thiagoroberto7891 2 жыл бұрын
Man, me too. I found a comment that say that we can replace "return omit(user.toJSON(), 'password');" to "return omit(user.toObject(), 'password');" at user service
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 207 МЛН
Iron Chin ✅ Isaih made this look too easy
00:13
Power Slap
Рет қаралды 36 МЛН
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 207 МЛН