Тёмный

Node.js App From Scratch | Express, MongoDB & Google OAuth 

Traversy Media
Подписаться 2,3 млн
Просмотров 638 тыс.
50% 1

This is a full application build of the StoryBooks app which uses Node.js, Express, MongoDB, Passport with a Google OAuth strategy and more.
Full Code:
github.com/bradtraversy/story...
💖 Become a Patron: Show support & get perks!
/ traversymedia
Website & Udemy Course Links:
www.traversymedia.com
Follow Traversy Media:
/ traversymedia
/ traversymedia
/ traversymedia
TimeStamps:
Intro - 00:00
Database Setup - 3:41
Install Dependencies - 6:10
Initial Express Setup - 10:26
Connect Database - 14:00
Morgan Logger - 17:27
Template Engine & Layouts - 18:22
Index Routes & Views - 21:44
Materialize & Font Awesome - 25:54
Set Static Folder - 26:55
Login Layout - 29:13
Login Page Template - 31:55
Start Google Login - 33:57
Passport Intro - 36:46
Passport Config & Sessions - 39:00
User Model - 42:49
Passport Google Strategy - 45:41
Auth Routes - 49:50
Save Google Profile Data - 55:06
Logout - 59:54
Navigation - 1:01:11
Auth Middleware - 1:03:22
Store Sessions In Database - 1:08:36
Story Model - 1:12:27
Dashboard Stories - 1:14:44
Add Story - 1:21:57
Format Date Handlebar Helper - 1:33:35
Public Stories - 1:36:40
Truncate & StripTags Helpers - 1:44:10
Edit Icon Helper - 1:47:04
Edit Story - 1:54:21
Method Override For PUT Requests - 2:02:30
Method Override For DELETE Requests - 2:10:56
Single Story Page - 2:18:46
User Stories - 2:24:36

Наука

Опубликовано:

 

5 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 1 тыс.   
@brooke946
@brooke946 Год назад
Awesome tutorial! To others doing it in 2023, here are fixes for a few errors I got due to updated versions of Mongoose: - One is around the Authentication section of the video: 'MongooseError: Model.findById() no longer accepts a callback'. I had success changing the code to deserializeUser at the end of passport.js to: passport.deserializeUser(async (id, done) => { done(null, await User.findById(id)) }) - Another error was the DELETE request section, in the stories.js file: 'TypeError: Story.remove is not a function'. Here I had success changing Story.remove() to Story.deleteOne()
@gimmethat21
@gimmethat21 Год назад
OMG! Thank you so much! You're a GODSEND. I hope your pillow is always cold at night.
@aaronsimpson4250
@aaronsimpson4250 8 месяцев назад
THANK YOU!!
@pavelasbulatovas3520
@pavelasbulatovas3520 7 месяцев назад
Also after mongoose v6+ the mongoose.connect(uri, options), for options: useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false there is no need to add these. basically, you can use: mongoose.connect(uri), because these methods are now used as default.
@57Sauce
@57Sauce Месяц назад
Thank you!
@ABHISHEKRANA-zs7jr
@ABHISHEKRANA-zs7jr Месяц назад
router.get('/logout', (req, res, next) => { req.logout((err) => { if (err) { return next(err); } res.redirect('/'); }); }); for errror req#logout requires a callback function
@TraversyMedia
@TraversyMedia 4 года назад
Intro - 00:00 Database Setup - 3:41 Install Dependencies - 6:10 Initial Express Setup - 10:26 Connect Database - 14:00 Morgan Logger - 17:27 Template Engine & Layouts - 18:22 Index Routes & Views - 21:44 Materialize & Font Awesome - 25:54 Set Static Folder - 26:55 Login Layout - 29:13 Login Page Template - 31:55 Start Google Login - 33:57 Passport Intro - 36:46 Passport Config & Sessions - 39:00 User Model - 42:49 Passport Google Strategy - 45:41 Auth Routes - 49:50 Save Google Profile Data - 55:06 Logout - 59:54 Navigation - 1:01:11 Auth Middleware - 1:03:22 Store Sessions In Database - 1:08:36 Story Model - 1:12:27 Dashboard Stories - 1:14:44 Add Story - 1:21:57 Format Date Handlebar Helper - 1:33:35 Public Stories - 1:36:40 Truncate & StripTags Helpers - 1:44:10 Edit Icon Helper - 1:47:04 Edit Story - 1:54:21 Method Override For PUT Requests - 2:02:30 Method Override For DELETE Requests - 2:10:56 Single Story Page - 2:18:46 User Stories - 2:24:36
@TraversyMedia
@TraversyMedia 4 года назад
@@arielcg_ Wow I did not even know about this. Some RU-vidr I am haha
@cherulast7998
@cherulast7998 4 года назад
@@arielcg_ I'm trying to execute this: $ npm install express --save or any dependency i cant install it it show me the below error type please help me brad !!! And I'm getting this log: > npm > ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request > to npm.jibo.com:8080/express failed, reason: connect ETIMEDOUT > 10.0.0.106:8080 npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or > have bad network settings. npm ERR! network npm ERR! network If you > are behind a proxy, please make sure that the npm ERR! network 'proxy' > config is set properly. See: 'npm help config' I have no Idea what I'm doing with Node and npm because I'm new to this I have tried to look for a solution, but nothing points me in the right direction, probably because I'm asking wrong questions. i have try to excute this : Npm config set registry registry.npmjs.org/ But i cant install express or any other dependency I am student in college i use wifi does this have problem? Please guys help me out one of you pleases 🙏🙏🙏🙏🙏🙏🙏🙏
@imaneziani4016
@imaneziani4016 4 года назад
Ariel, is this tutorial for beginners? Someone who knows some JS only.
@allanalexander8049
@allanalexander8049 4 года назад
Handlebars: Access has been denied to resolve the property. I've been getting this warning. So I'm using handlebars/allow-prototype-access to pass in the data. But this seems to be vulnerable to security risks for a production level application. Anybody who's been able to solve this issue?
@TraversyMedia
@TraversyMedia 4 года назад
@@allanalexander8049 Are you using .lean() on the query? Check this page - stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is
@fvgoya
@fvgoya 4 года назад
Brad is the type of person that, when delivery something, delivery much more than expect. Thank you for always help us with amazing contents.
@ShogoMakishimaxx
@ShogoMakishimaxx 2 года назад
Honestly, it seems that we all love the videos like this. It's raw, shows that even the most seasoned get tired, burnt, and still have to google, and it encompasses the REAL process. I know that this is not advantageous for you, especially being tired, but we love the rawness. Keep em coming if you desired to! If not, then your regular tutorials work out just as well. :) Thanks Brad!
@gogoikabir
@gogoikabir 4 года назад
I was looking for passport and google Oauth yesterday 🙃. Now I have a tutorial from by fav instructor ❣️.
@DaKingOfBall23
@DaKingOfBall23 2 года назад
const { engine } = require("express-handlebars"); app.engine( "hbs", engine({ extname: "hbs", defaultLayout: false, layoutsDir: "views/layouts/", }) ); app.set("view engine", "hbs"); app.set("views", "./views"); This should work if anyone stuck
@shivani9840
@shivani9840 2 года назад
Hey Ajay! Are you a fresher and open to opportunities in web development currently? Have you created any projects in JavaScript frameworks?
@neko669
@neko669 2 года назад
Thanks for the help but mine is still not working, I am getting this Error: No default engine was specified and no extension was provided.
@user-nj4dc2tr4e
@user-nj4dc2tr4e 2 года назад
Thanks!!
@bethe4957
@bethe4957 2 года назад
Thank you!
@alessioperrone3907
@alessioperrone3907 2 года назад
dont u have problems with MongoStore? it told me this MongoStore.create({mongoUrl: process.env.MONGO_URI,}), ^ TypeError: Cannot read properties of undefined (reading 'create')
@crypt0z
@crypt0z 4 года назад
2 days ago I made the decision to change my life and become a full stack dev. Then Brad drops the mother of all node tutorials. BOOOOM. Thanks Brad, your my favorite teacher!
@desoga
@desoga 4 года назад
The timestamp feature is really user friendly. Good one from youtube.
@TraversyMedia
@TraversyMedia 4 года назад
I know right? I just found out about it. I will be using it quite a bit from now on
@desoga
@desoga 4 года назад
@@TraversyMedia Awesome!
@natharamgorakhram361
@natharamgorakhram361 4 года назад
@@TraversyMedia I am getting error 'TokenError: client_secret is missing'.
@_.sunnyraj._
@_.sunnyraj._ 3 года назад
agreed
@kazcode1937
@kazcode1937 3 года назад
@@TraversyMedia how to deploy this project
@jellycoding
@jellycoding 3 года назад
*If you get ERROR* ... MongoStore cannot be invoked without 'new'. Solution is to change two lines of code: *OLD* const MongoStore = require('connect-mongo')(session) *NEW* const MongoStore = require('connect-mongo') *OLD* store: new MongoStore({ mongooseConnection: mongoose.connection }) *NEW* store: MongoStore.create({ mongoUrl: process.env.MONGO_URI }) Be sure you have the name MONGO_URI in your env-file.
@kotanaka
@kotanaka 2 года назад
thanks
@jamesbond86
@jamesbond86 2 года назад
thanks!
@PatrickAmornlertpanit
@PatrickAmornlertpanit 2 года назад
Thank you!
@danyal6211
@danyal6211 2 года назад
cheers mate!
@mcaddit6802
@mcaddit6802 Год назад
Thanks dear!!
@dean6046
@dean6046 4 года назад
Thank you Brad. This is literally exactly what I was waiting for. I will forever be a patreon!
@colinprincipe6293
@colinprincipe6293 2 года назад
One of the best tutorial videos I’ve ever watched. I feel like I learned more in this video than I have in the past year of front end development
@mitchellfoley8331
@mitchellfoley8331 4 года назад
I recently started to learn JavaScript to fill some unexpected free time (thanks COVID.....) and I have to say that you are one of the instructors I have ever found on RU-vid! You have a knack for explaining what you are doing at just the right level of detail to understand what is going on without getting bogged down. Thank you!
@sharminoomatia
@sharminoomatia 4 года назад
This is just so amazing, I learn a lot from all your videos. Thank you so much for all the efforts you put in to make all these videos that help your viewers so much. It's just amazing. Thank you so much Brad Traversy Sir. Thanks a lot . You are one of my favorite instructors
@kushagrsharma4398
@kushagrsharma4398 4 года назад
A great video for those of us trying to learn backend development. Thanks for making such great tutorials Brad!
@worldwideflyby
@worldwideflyby Год назад
Fantastic tutorial, took me weeks to get through (a few mins at a time here and there) but this is fantastically in depth and delivered so clearly. Thanks!
@paulgallovich8823
@paulgallovich8823 4 года назад
I have been looking for this for sometime now, this is awesome and perfect timing! I needed this right now. Brad delivers so much value, that's why I purchase all his courses.
@RobinJesba
@RobinJesba 4 года назад
Just now, I spoke with my friend about learning nodejs. And here they are. Man! This is Awesome 🤘🏻 Love your content ❤️
@TheAremoh
@TheAremoh 4 года назад
That introductory sound. You're the BEST Brad.
@RexGalilae
@RexGalilae 4 года назад
Ngl I get chubbed up every time I hear it
@sonarsphere
@sonarsphere 4 года назад
It drives me nuts. Always skip.
@TraversyMedia
@TraversyMedia 4 года назад
@@sonarsphere Sorry :( I tried to make as short as possible. I also stopped sponsors for now so you guys don't have to watch a 30 sec ad
@saoudeltelawy8971
@saoudeltelawy8971 4 года назад
This is so great .. so this is a topic for anyone “Front end “ and want to know about Backend as newbie of BAckend using “Node.Js” ... am i right???
@TraversyMedia
@TraversyMedia 4 года назад
@@saoudeltelawy8971 Yes, this is using server side templates as opposed to rendering a JSON API and using a frontend framework. I may do the same app using React on the frontend at some point
@claude.detchambila
@claude.detchambila 4 года назад
Thanks, Brad. I have been watching you since my early days as a student in software development. You have inspired me a lot. It's true that I'm mostly into .Net development but I always find good takeaways from your all tutorials.
@puky4685
@puky4685 4 года назад
Can't wait to wake up and start learning. You're the man, Brad.
@punjabitech5546
@punjabitech5546 3 года назад
My whole semester in 2:30 hours Thanks Brad
@aakashtiwari3677
@aakashtiwari3677 2 года назад
1.) MongoParseError: option usefindandmodify is not supported If above error occurs in your code. Just remove useFindAndModify: false this from your code. 2.) app.engine('.hbs', exphbs({defaultLayout: 'main', extname: '.hbs'})); app.set('view engine', '.hbs'); If you use above code and if TypeError: exphbs is not a function this error occurs, just use "exphbs.engine( )" instead of "exphbs( )"
@sampro1993
@sampro1993 2 года назад
Thank you :)
@chittychitty15
@chittychitty15 2 года назад
Cheers buddy.
@alessioperrone3907
@alessioperrone3907 2 года назад
do u know ho to solve this error it gaves me? store: MongoStore.create({mongoUrl: process.env.MONGO_URI,}), ^ TypeError: MongoStore.create is not a function
@LucasLima-qq5yd
@LucasLima-qq5yd Год назад
Thanks mate!
@thomasogden8581
@thomasogden8581 4 года назад
This may be the best advanced web dev tutorial on youtube. Top work Brad
@mukey
@mukey Год назад
Thanks for taking the time to explain all of the steps. Lots of videos, but not all of them take the time to thoroughly explain everything.
@naeemtahir5036
@naeemtahir5036 4 года назад
It's difficult to live in a third world country and buy udemy courses to keep up with modern technologies. But your videos on different issues and technologies are so much helpful for me and I needed a video like this so badly, Thank you so much, Brad. Love from Pakistan.
@jellycoding
@jellycoding 3 года назад
Now Udemy has become very expensive. Normal price I get for Node and React corses are 95-100 Euro (~120 dollars). And I live in Sweden and can't afford that. So everyone be sure to don't block adds on RU-vid so we can keep this RU-vid learning alive.
@aaaaaaaaaa9837
@aaaaaaaaaa9837 3 года назад
@@jellycoding WOW here in Brazil it's just 4 euros on sale
@jellycoding
@jellycoding 3 года назад
@@aaaaaaaaaa9837 Ohh .... I was just looking at Griders "The Complete Developers Guide to MongoDB". For me it is 99.99 Euro (~ $119). it's an insane price that I sadly can't afford.
@siddhantraj5323
@siddhantraj5323 3 года назад
in india we get for less that 7 $'s approx
@jellycoding
@jellycoding 3 года назад
@@siddhantraj5323 Really? Why is it so expensive in Sweden? I checked right now and Traversy course MERN is 149.99 Euros (~179 dollar). That's crazy.
@abdulsamadgomda4387
@abdulsamadgomda4387 2 года назад
In the new version of passport, req.logout() is now an asynchronous function, whereas previously it was synchronous. Hence you need to modify the logout route from the tutorial. The logout route was previously: router.get('/logout', (req, res, next) => { req.logout(); res.redirect('/') }) should be modified to: router.get('/logout', (req, res, next) => { req.logout((error)=>{ if (error) {return next(error)} res.redirect('/') }); })
@zedshockblade7157
@zedshockblade7157 Год назад
What is the use of the accessToken and refreshToken in the callback? Since you only need the profile to set up the session.
@carosendahl
@carosendahl Год назад
The code: router.get('/logout', (req, res, next) => { req.logout((error)=>{ if (error) {return next(error)} res.redirect('/') }); }) should be router.get('/logout', (req, res, next) => { req.logout((error)=>{ if (error) {return next(error)} }); res.redirect('/') })
@athbuys3588
@athbuys3588 Год назад
thanks, this helped me out
@majidjamili2157
@majidjamili2157 Год назад
Hello, in the stroy POST route when you define -> req.body.user = req.user.id, It keeps seding an error : BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer When I know that the id send to mongo is not an onbjectId type and that's wht it doesnt work, but how it worked for your code? Any help please ????
@michaelrandazzo1957
@michaelrandazzo1957 Год назад
Hey, thanks! Going over this again and def won't work the old way. I do have a question. I understand 'async await' to be used when the function needs to wait for something. I don't see the words "async' or 'await' here. and I'm guessing maybe we wait a beat for whether or not we have an error? Am I totally out in left field? That's where you'll usually find me.
@andresfelipeh7586
@andresfelipeh7586 4 года назад
You are really an awesome teacher. I have learned with you ( React & Node ) and I did my first project with your course. Now, I'm thankful with this tutorial. Thanks so much.
@okanyldrmop
@okanyldrmop 3 года назад
It is probably one of the most impressive tutorails that I have ever did, thank you! I hope that you do more tuts like that about node js!
@firebrickfilmstv
@firebrickfilmstv 4 года назад
I love your project based approach to your videos :) Really helps to show a full and realistic development workflow in a way that a lot of online programming courses/tutorials don't.
@ctushr
@ctushr 4 года назад
I needed this so badly. 😭
@kazcode1937
@kazcode1937 3 года назад
bro how to deploy this...im getting error in heroku while deploy
@aashiqahmed5273
@aashiqahmed5273 4 года назад
This shows why you are the best, Crystal clear explanation which lacks in other youtubers.You are the best!
@ZeusTheKid
@ZeusTheKid 4 года назад
It's crazy that I was searching for Traversy MongoDB videos and he literally made a new one today :)
@evenzero
@evenzero 4 года назад
YEAH!!!!! more long form content from Brad is what we need, GO BRAD!!!!
@evenzero
@evenzero 4 года назад
i'm getting a "MongooseServerSelectionError: bad auth Authentication failed." despite following all the steps, full error log here pastebin.com/R5ACrSaj in case anyone wants to help.
@Techjd
@Techjd 4 года назад
@@evenzero Maybe it's due to that authentication link. Try MongoDB with a different account.
@DevilsDaddy1
@DevilsDaddy1 4 года назад
@@evenzero remove < > these angled brackets surrounding password and dbname in the connection URL
@kazcode1937
@kazcode1937 3 года назад
@@Techjd bro how to deploy this...im getting error in heroku while deploy
@namlasyruhdwohc6340
@namlasyruhdwohc6340 2 года назад
*UPDATE:* For "Logout", the new way should be: router.get('/logout', (req, res, next) => { req.logout( (err) => { if(err){return next(err)} res.redirect('/') } ) })
@braindrainfactor
@braindrainfactor 2 года назад
Does it remove session in MongoDB? In my case this method doesn't remove session and req.session.destroy() either. I'm using passport-local instead of GoogleOAuth.
@cdialpha
@cdialpha 2 года назад
Thanks this helped! What was the update that made this necessary ?
@MrOregonCurtis
@MrOregonCurtis 2 года назад
Confirmed that this fixed the "req#logout requires a callback function" error message that I was getting. Thanks Namlas!
@vitoracacio1
@vitoracacio1 Год назад
Also fixed it for me. Thanks!
@SreeramVenkitesh
@SreeramVenkitesh 4 года назад
I swear to god I took the entire last week making a webapp with Node, Express, and Google Oauth with Passport. It was challenging to find resources for all of these, but I had fun. I finally pack up everything and release the project and decided to chill, and I get the notification for this video! Eventhough I just completed a project I'll surely try this out Brad! Thanks for all the effort you're putting in!
@Kaylaanngrace
@Kaylaanngrace Год назад
I really appreciate this "unpolished" tutorial because it gives a realistic look into the process of developing an application. Thank you for sharing!
@Sam-eh8eg
@Sam-eh8eg 4 года назад
I love how you leave the mistakes in the video, debugging is such a big part of the process.
@arijitroy8390
@arijitroy8390 3 года назад
did u notice any?
@volodymyr7214
@volodymyr7214 2 года назад
These are not mistakes, but changes in some packages over time )) The older tutorial you use, the more problems you encounter.
@seedme
@seedme 2 года назад
@@arijitroy8390 there are and there should be in real life programming. e.g., at @ the date should be story.createdAt not date now.
@seedme
@seedme 2 года назад
@@volodymyr7214 and after two years there are even more, but it is the process of making everything running really makes you progressing isn't it?
@volodymyr7214
@volodymyr7214 2 года назад
@@seedme For sure! I like challenges )
@srdjagunjic
@srdjagunjic 4 года назад
Brad, to escape text formatting when pasting, use CTRL+SHIFT+V ;)
@philipmcdonnell7168
@philipmcdonnell7168 4 года назад
Awesome. You’ve become my goto in inspiration for all things code. I’m still working my way through your Udemy React Front to Back but this has a lot of the functionality my project could use once I have the structure sorted. Many thanks from the UK.
@retryWhore
@retryWhore 3 года назад
This is actually an amazing tutorial. It really helped to understand not just one, but multiple components that are part of the whole process.
@jonathanself1263
@jonathanself1263 2 года назад
15:20 Mongoose 6+: useNewUrlParser, useUnifiedTopology, useFindAndModify, and useCreateIndex are no longer supported options. Mongoose 6 always behaves as if useNewUrlParser, useUnifiedTopology, and useCreateIndex are true, and useFindAndModify is false. Please remove these options from your code.
@rbdtrades9790
@rbdtrades9790 Год назад
thanks, fixed my bug
@snehgupta5720
@snehgupta5720 Год назад
how much i have to remove , it will be great if you can share the code
@KaranKumar-hs1fu
@KaranKumar-hs1fu Год назад
then instead of these options , what i"ll add?
@serpent9361
@serpent9361 2 года назад
If anyone is doing this currently, there have been some package changes, just copy Brad's package.json file and do `npm i` instead of installing from the terminal. Good exercise would be to do this, then update the packages and fix the changes.
@unklewigglez
@unklewigglez 4 года назад
Thank you so much for this Brad! I'm one of those that bought your dev to deployment course a while back and have to say that this is an absolutely incredible gift! I will definitely be updating my story books app! Thank you! Thank you! Thank you!
@TraversyMedia
@TraversyMedia 4 года назад
There are a few things missing including the comment functionality. I may do a part 2 with comments and add some new stuff as well like a local login option
@r-i-ch
@r-i-ch 4 года назад
Took me a whole day, but got through it. Brad - This tutorial is EPIC!!! You are a legend!
@khamphone86
@khamphone86 4 года назад
long time no see missed you so much busy with two daughters these days
@TraversyMedia
@TraversyMedia 4 года назад
Congrats! Daughters are the best :)
@samuelnmeje
@samuelnmeje 4 года назад
Nice one, almost the Equivalent to an Udemy Course.
@kazcode1937
@kazcode1937 3 года назад
bro how to deploy this...im getting error in heroku while deploy
@tejasvigupta07
@tejasvigupta07 3 года назад
@@kazcode1937 How can you expect someone to answer you if you don't put the type of error you are getting?
@brilliantatosam
@brilliantatosam 4 года назад
Hello Brad! I am your student from Ghana. I just want you to know that, you're the best. I picked up your JavaScript course on udemy and I loved it.
@king-manu2758
@king-manu2758 3 года назад
It's great having these projects for reference when I need to remember how to do something. Also I learn a lot in the process. thanks a ton Brad.
@bobobobbyboy
@bobobobbyboy 2 года назад
As per an update to passport, in /routes/auth.js, in the logout helper, replace ``` req.logout(); res.redirect(); ``` with ``` req.logout(function(err) { if (err) { return next(err); } res.redirect('/'); }); ```
@EwanHC
@EwanHC 4 года назад
Very helpful tutorial, thanks! When I go to create an API key I first have to go through the OAuth consent screen which requires me to choose a User Type and gives me two options, Internal and External and then requires some config such as setting an application name. Might be worth mentioning this in the comments or description since it's not included in the video.
@adarshkunwar8139
@adarshkunwar8139 4 года назад
Heyy Ewan is that going to charge for API services on usage? I m stuck.
@surfoyb8727
@surfoyb8727 4 года назад
has anyone got anymore information on this?
@EwanHC
@EwanHC 4 года назад
@@surfoyb8727 I just chose external, as the internal option was disabled, then set an application name and everything worked fine
@adarshkunwar8139
@adarshkunwar8139 4 года назад
@@surfoyb8727 I went on to chose external and set up everything else that was required and its working all well even when I have not added any billing account. I don't know why.
@FullOfCompassion
@FullOfCompassion 4 года назад
I chose external as well and for now it seems to be working. But as far as I understand, once you reach 100 signed up users, the verification process is implemented.
@patrickconrad4023
@patrickconrad4023 4 года назад
Dude you're incredible. I got really discouraged starting with backend stuff. I feel like I'm 10000times more understanding of whats going on now. Thank you!
@tapansonak1431
@tapansonak1431 Год назад
Thanks a lot Brad, this is by far the most complex application that I have made. Please make more tutorials like this.
@bonchan4404
@bonchan4404 4 года назад
Actual Tutorial : 2:28:42 Me: 3 days . HAHAHA
@JordanAF808
@JordanAF808 3 года назад
Me: 4 days. 2 days of fixing typos, smh.
@tarunsankhla2328
@tarunsankhla2328 3 года назад
Same it took me 3 days 😄
@saadmughal2185
@saadmughal2185 3 года назад
@@tarunsankhla2328 bro aik error a rha hai 25:54 pr views folders sa files match nhi ho rhi Links pr visit kro tokich show nhi hota
@projectcarver
@projectcarver 5 месяцев назад
The logout function for Passport no longer works since version 0.6.0. You'll want to use: router.get('/logout', function(req, res, next) { req.logout(function(err) { if (err) { return next(err); } res.redirect('/'); }); });
@sardorjumanazarov441
@sardorjumanazarov441 4 года назад
It is immpossible to believe, Brad made over 2 hours course for youtube. awesome
@JFLABBERVILLE
@JFLABBERVILLE 4 года назад
Really looking forward to this one. I have to tell you I really enjoy your work. Glad you are out there making content and I hope you are getting paid handsomely for your excellent efforts.
@MrOregonCurtis
@MrOregonCurtis 2 года назад
At 1:44:13 I wasn't getting the profile images loaded. Google was returning a 403. When I placed referrerpolicy='no-referrer' in the image element inside of index.hbs it worked.
@matthewvaccaro8877
@matthewvaccaro8877 2 года назад
I love how raw this video is. It shows the honest view into engineering and not this "pro" fake view that good engineers just coding a million miles an hour. Great video!
@A1996ARP2075
@A1996ARP2075 4 года назад
Thank you Brad for making all great videos to help junior developers improve
@blessdarah1256
@blessdarah1256 4 года назад
Brad, You have finally shown me why I need to learn node! Oh my... this tutorial is like a whole course mehn....
@hemant3123
@hemant3123 4 месяца назад
const exphbs = require('express-handlebars'); app.engine('.hbs', exphbs.engine({extname: '.hbs'})); app.set('view engine', '.hbs'); This should work if anyone stuck
@celesterhoades4845
@celesterhoades4845 2 месяца назад
Thank you so much!
@hemant3123
@hemant3123 2 месяца назад
@@celesterhoades4845 100devs, let's go
@evettabanks5668
@evettabanks5668 16 дней назад
Thank you🎉
@aesthetic.sixteen
@aesthetic.sixteen 4 года назад
//Deploying this app on heroku remove cross-env from start script while deploying app on heroku this will help Add your app uri (domain on which you are going to host your webapp) to Google O auth ' s authorized urls by this change your url is verified to use Google O auth service it will take some time !!!
@alexandrukontur261
@alexandrukontur261 4 года назад
Hey Brad, thanx for all the good stuff that you have done for the community. Nothing but love ❤️
@LeoMiranda
@LeoMiranda 3 года назад
Thank you Brad, you are the best! At 2:00:00, instead of creating "select" Helper, I created a "ifEqual" Helper: ifEqual: function (input, value) { return input == value } These are my options in edit.hbs: Public private
@sudipshrestha9377
@sudipshrestha9377 3 года назад
stuck at edit icon helper 1:53:03 , throw me an error : " Cannot read property '_id' of undefined ", while click on public stories. Help me out..
@shubhamverma192
@shubhamverma192 2 года назад
Same have you found the solution yet??
@shane27099
@shane27099 2 года назад
i am also stuck there...did any one find the solution
@troymitchel4790
@troymitchel4790 4 года назад
Great content! This would also be cool to use MySQL as an alternative to MongoDB.
@FabioGiacomini
@FabioGiacomini 5 месяцев назад
Brad you are a talented teacher and programmer. This tutorial is very complete, I think I have to watch more and more times to understand everything well. Thanks
@cristlui4
@cristlui4 4 года назад
Thank you for all the knowledge you impart onto all of us. After this video, nothing can stop me now!
@nishanttyagi9342
@nishanttyagi9342 4 года назад
Brad's 2 hour course = other's 5-6 hour's
@badripaudel77
@badripaudel77 4 года назад
Yes that's true. I feel the same.
@awekeningbro1207
@awekeningbro1207 4 года назад
i am pretty sure it took him longer than that to record the video
@maskman4821
@maskman4821 4 года назад
true, unlike maximilliam's super long courses, brad's short courses completely outperform !!!
@FordExplorer-rm6ew
@FordExplorer-rm6ew 4 года назад
Can we get a celebrity boxing match from all the -grift- course sales companies. Idk if some of these comapnies are like "sister comapnies" or however one would phrase that. Pluralsight vs Udemy coursemakers celebrity boxing. Stefan Mischook could be the referee.
@fatihbulut9567
@fatihbulut9567 4 года назад
Wow, this is what I have been looking for recently. It is great to learn from you. Thank you so much, you are a precious man!
@mehulmorker8347
@mehulmorker8347 4 года назад
Just about to start a project using google oauth and you uploaded this. Thanks man. You are saviour
@onlyfornow2268
@onlyfornow2268 2 года назад
This tutorial was brilliant! Thank you so much, implementing a project makes the topic much easier to learn and understand!
@kenny6451
@kenny6451 3 года назад
The best youtube tutorial i had on Nodejs and mongodb, Thank you so much!
@girlsincode9255
@girlsincode9255 3 года назад
Easier version for edit story form select: Public Private and in utils: export function select(selected, option) { return (selected == option) ? 'selected="selected"' : ''; }
@anekarupa7589
@anekarupa7589 2 года назад
this is nice
@MrOregonCurtis
@MrOregonCurtis 2 года назад
Thanks, this worked great for me!
@aswinsampath3773
@aswinsampath3773 3 года назад
For People facing error of connect-mongo @1:10:21 install connect-mongo version 3.2.0 npm uninstall connect-mongo npm install connect-mongo@3.2.0
@LeoMiranda
@LeoMiranda 3 года назад
You save me man, thanks
@mceloooooo
@mceloooooo 3 года назад
tried almost everything and this one was the one and only ty bud.
@jasonlee7227
@jasonlee7227 3 года назад
Thank you so very much for the solution. I have been searching around trying to figure out a solution. And nothing worked. So I appreciate your help
@jamesselene
@jamesselene 4 года назад
Thanks, Brad. I purchased the old Udemy course and it was well worth it. Glad you were able to provide an update.
@KennetP
@KennetP 4 года назад
I really appreciate the detail and quality of your code and explanations. You're awesome, Brad, thank you
@reedhimes
@reedhimes Год назад
couldnt get the handlebars working as shown in the video... something must have changed since it was created. what worked for me was replacing "const exphbs = require('express-handlebars')" with "const { engine } = require('express-handlebars')" and "app.engine('.hbs', exphbs({ defaultLayout: 'main', extname: '.hbs' }))" with "app.engine('handlbars', engine({ extname: '.hbs', defaultLayout: "main" }))"... was getting an error exphbs is not a function. found the solution here: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-VSDZvQeR34M.html
@tommywa_a
@tommywa_a Год назад
Thanks 🙏👍
@Tailsxz
@Tailsxz 6 месяцев назад
Thanks so much Traversy!!! You're the goat, I learned absolutely so much from this, and it being outdated helped me learn even more and get practice debugging!
@ansarulanis02
@ansarulanis02 4 года назад
You've done an amazing work Brad. Thank you so much. Keep it up. 😍
@princechikuni5496
@princechikuni5496 4 года назад
I was looking for a tutorial to do this weekend, then boom.... You upload this.. Thanks man👏🏾
@nilmendes7710
@nilmendes7710 4 года назад
Your tutorials are one of the most fun ones I’ve learned, Professor Brad, 36:32 → kkkkkk. Thank you very much for this tutorial and this channel. Success in your projects and stay well!
@emmanuelfabiani8435
@emmanuelfabiani8435 3 года назад
You are such an amazing man and great teacher! You really make the world a better place. Thanks Brad
@illiaantonenko1866
@illiaantonenko1866 4 года назад
Man, you're awesome. I'm now writing on php Laravel and trying to find something useful about Node JS and it is just it. Everything I want to know about Node at the beginning is here and in other your videos about that topic. Thank you!
@user-fy4qe7so3o
@user-fy4qe7so3o 4 года назад
Dude slow down I'm trying to keep up, Each day I'm adding another video of yours to my watch later list.. All jokes aside now I'm having so much fun watching you keep up with the good work.
@dev_willyy
@dev_willyy 7 месяцев назад
The part of the video 02:05:02 where Brad said, "let's actually replace the var with let..i don't like the sight of var" really got me laughing & chuckling. This ia an awesome video altogether! It helped me gain mastery of google-auth. Thanks a ton from Nigeria!
@aleksandryakovenko7994
@aleksandryakovenko7994 4 года назад
Thanks a lot for having TimeStamps, it's really helpful!
@BarakAlmog
@BarakAlmog 2 года назад
Anyone else has the urge going on a buying spree on Udemy of all of his courses?... I already bought the Angular in-depth, waiting for a good deal to buy the NodeJS and React in-depth courses. So happy I found this channel!
@funkyaj79
@funkyaj79 4 года назад
Awesome and straight forward, I love it and shared it with my colleagues :) Thank you so much
@badripaudel77
@badripaudel77 4 года назад
Wow looks exciting. You got me, I was just exploring node.js and here Brad uploaded video. Appreciate it.
@paulvanhout9695
@paulvanhout9695 3 года назад
Outstanding tutorial. Really help me ramp up on Node, Express and Mongo!
@mhdyousuf3392
@mhdyousuf3392 4 года назад
whenever brad uploads a video, i like the video before i even watch.♥️♥️
@deepestbars3889
@deepestbars3889 Год назад
Thank you so much! I have finally finish this tutorial
@Infinitude
@Infinitude 3 года назад
Thank you so much for the Tutorial, we always admire your tutorials and the way you present is awesome.
@nanaic9826
@nanaic9826 2 года назад
This video is amazing and 100 percent made me understand express and mongodb so much better. You are the man!
@sakif7
@sakif7 4 года назад
I can't thank you enough, Brad. this was sooo so helpful for me
@adarshkunwar8139
@adarshkunwar8139 4 года назад
The best project on RU-vid over NodeJs for a long time. Good work man :)
@kazcode1937
@kazcode1937 3 года назад
bro how to deploy this...im getting error in heroku while deploy ..help?
@vertvaliant6581
@vertvaliant6581 4 года назад
Brad, you are more than human. Thank you for sharing your wealth of knowledge with us.
@nilanjandeb1020
@nilanjandeb1020 4 года назад
TRAVERSY MEDIA is the best web Dev explaining channel and Instructor I have ever seen...!!
@michaelantoni8323
@michaelantoni8323 4 года назад
Wow I thought at first its just an intro for your online course, Thank you Brad.
Далее
Node.js Crash Course
1:30:08
Просмотров 1,6 млн
NestJS & Google OAuth2 with Passport
1:12:18
Просмотров 36 тыс.
Symmetrical face⁉️🤔 #beauty
00:15
Просмотров 2,6 млн
Наташа Кампуш. 3096 дней в плену.
00:58
Learn Express JS In 35 Minutes
36:03
Просмотров 784 тыс.
Vite Crash Course | Faster Alternative To CRA
16:24
Просмотров 194 тыс.
NodeJS & Express - Google OAuth2 using PassportJS
20:33
Vanilla Node.js REST API | No Framework
1:01:37
Просмотров 161 тыс.
How to build a REST API with Node js & Express
58:40
Просмотров 1,7 млн
React Crash Course 2024
3:04:36
Просмотров 404 тыс.
Node.js Ultimate Beginner’s Guide in 7 Easy Steps
16:20