Create a Custom URL Shortener using Node.JS and MongoDB
HTML-код
- Опубликовано: 25 янв 2023
- ► Master NodeJS Playlist: • Master NodeJS
► Download Source Code: www.piyushgarg.dev/files/code...
Learn how to build your own URL shortener service using Node.js, Express, and MongoDB. In this video tutorial, we'll show you step-by-step how to set up the server, connect to a MongoDB database, and implement the functionality to shorten and redirect URLs. Perfect for beginners and experienced developers alike!
► Complete Full Stack Web Developer RoadMap 2023: • Complete Full Stack We...
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. It allows developers to run JavaScript on the server side, creating server-side applications with JavaScript.
► My Website: www.piyushgarg.dev
My Gears
► My Girlfriend: amzn.to/3WD6FRp
► Apple MacBook Laptop: amzn.to/3WBJgQn
► Anker USB Hub: amzn.to/3GhZSr0
► Blue Yeti Microphone: amzn.to/3YKZ9FT
► External 27” Monitor: amzn.to/3Vp3xaO
► Logitech MK295 Wireless Keyboard and Mouse: amzn.to/3DuL1bB
► Seagate Expansion 1TB External HDD: amzn.to/3QMm5Q8
► Tripod: amzn.to/3S4OwK4
► Ring Light: amzn.to/3YLf8DR
Disclaimer: All the links above are affiliate links.
Social Links
► Twitter - / piyushgarg_dev
► LinkedIn - / piyushgarg195
Video Titles
Create Your Own URL Shortener Service with Node.js, Express, and MongoDB
Make a URL Shortener App in Node.js and Express - Beginner's Guide
Making a URL Shortening Application using Node.js, Express and MongoDB
Tags
#nodejs #javascript #expressjs #mongodb #mernstack #developer #api #https #server #javascriptinhindi #webdevelopment #webapp #realtimeapp #serverside #nonblockingio #tech
Node ka real feel iss bnde me Diya h, hats off man❤
Thank you for your great efforts! Really really awesome video.
You make really fantastic videos. I like the way of your teaching and writing the code in efficient manner. wow It's really outstanding...
love your playlist
Bhai kya Banda haii master haii computer field ka nodejs pe kya command hai iski , wahhhh isee to Google, microsoft aasani se job mil sakti haii ...
Great bro keep going ❤💯🔥
Congrats For 100k MAn
nice explanation thanks for great video!!
i like the way you explain and also i learning how to read docs
Bhai maza aagya. awesome approach 🥳
amazing and simple project for beginners like me✨✨
Interesting video, nice explanation Thanks
thanks bro for the great video
thoda complex laga sab ek sath, but it was unbelievable 23 mins k video me itna sab kuch.. Vid - 21✅
Nice video bhaiya
Thanks🧡, nice video
Excellent explanation❤
I love it
Nice
if getting this error ->
res.redirect(entry.redirectedURL);
^
TypeError: Cannot read properties of null (reading 'redirectedURL')
at D:
ode js\URL-Shortner\index.js:27:22
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.16.0
[nodemon] app crashed - waiting for file changes before starting...
solution -
res.redirect('' + entry.redirectURL);
Thanks man
Really great video sir! just a suggestion if we install previous version on nanoid - nanoid@3 then we don't get an error
Thanks bro
Fantastic course. Node js ka feel aa gaya
bhai tune, short url project banye hai..?
Project completed ✅
Maja agya error handle karne mein ❤
excellent
Bhaiya can you please make a video on tracking the IP of the client in the analytics. As I was reading about this feature, this seams to be tricky in the case of proxy or load balancers.
URL Shortner created Done✅ thanks sir jee
have you completed url shortner ..?is shortid package was working..?
Osem content Hindi language fabulous teaching method thanks sir
Thanks and welcome
@@piyushgargdev hello sir Abhi Tak youtube pe mern series nahi hai good content with project aap apne chenal pe layiye hindi me
I was getting error with both nanoid and shortid , so I used nanoid@^3.0.0
I am not understanding these fucking topics 😅 what to do bro I am not liking can u suggest what u are doing now
Is it working ?
thanks bud
ShortId and nano Id are not working for me. I used another library caller short-unique-id
@@adityabisoyi1502 die with errors and dsa systemdesign and webdev
bhai I follow your same code and when i start npm the npm is running also but when i run send url from post man it always saying url is required please helpm me out
🔥🔥
Sir will you upload react native course please tell me?
13:08 their was an error with nanoId : you can install this specific version of nanoId to remove this error : npm install nanoid@2.1.11
thanks me later😀
great video bhaiya what will be the next video?
Wait till 5:00PM 💪🏻
how handlegenerateshorturl function get req and res objects?
18:02 bhai ye entry par hover karne suggestions kaise aaya?
Koi extension ho to batao!!
make a video on mongodb module in Nodejs
where did you declare urlRoute before importing
shortid has been reprecated, any other package recommended?
I am getting this error when I use generated shortid url in search bar:
res.redirect(entry.redirectURL);
^
TypeError: Cannot read properties of null (reading 'redirectURL')
This might solve the issue: (entry?.redirectURl)
Your two routes are clashing.
@@niteshkushwaha9493 then how to solve this ?
could be an unresolved promise, are you sure you are using async await or .then right?
So For This I will Give Solution which is
const entry = await Url.findOneAndUpdate({
shortId,
}, {
$push: {
visitHistory: {
timestamp: Date.now(),
}
}
});
res.redirect(entry.redirectURL);
})
Error is if you are Give if there are nothing return by entry Because Your name "shortId" is same in Your Schema "shortId " so Your Code will Succesfully Worked
pls give some basic knowledge on mongodb also ...i feel its going fast in between
I understood the code, but I didn't understand the purpose of this app
I mean why do we need short url anyways?
Where is the second video
I am getting confused because mongodb is not running properly in my project
it was not working because nano id supports common js syntax only upto version 3 and we are using version 5
solution : 1) use module syntax instead
2) degrade to version 3
Great Content
Hi there, I am a little bit confused, won't this URL shortner only work on the machine in which npm is running
Deployment ke bad sab machine pe work krega.
may I know what extension are you using / what command are you using for organizing the code , cause when I use shift+alt+f it don't organize the way yours does.
he is using Prettier extension
I use that too , though It feels like his does a lot better
LOL
thats the beauty of MacOS @@parasagarwal5701
@@parasagarwal5701 if you select the code and then formatting with prettier then it should work fine
Node.JS and MongoDB
facing that error what should i do
res.redirect( redirectURL);
^
ReferenceError: redirectURL is not defined
at D:\Web devlopment\Projects\URL_SHORTNER\index.js:32:20
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
same with me did u solved it ?
bhaiya I'm getting Error: read ECONNRESET on postman even after using express.json() middleware , with the same error msg in the console which you got , help me fix it?
has the error been resolved? i am stuck too.
getting error on postman get request "Cannot GET /url/8iN0AH5hG" also used yr source code but still getting issue how to fix can u help ?
router.get("/analytics/:shortId",handleAnyalytics) try this path
same issue , have you found the solution???
ValidationError: url validation failed: redirecturl: Path `redirecturl` is required.
How to deploy this on server ?
await is not working for res.redirect
can you please help
use async function then you will be able to use await
thanks for the tutorial. I am getting an error. while using findOneAndUpdate It returns null because of which redirect is not working. I tried your code also but it is not working
I am also getting the same error
check if u have exported and imported database properly
@@comparisondata2473 yes imported correctly.
it is the problem of res.redirect , it needs a protocol like http or https otherwise it consider the redirect as a relative path - this will throw out an error
Use this instead
const url=entry.redirectURL.startsWith('') || entry.redirectURL.startsWith('') ? entry.redirectURL :`${entry.redirectURL}` ;
res.redirect(url)
I am getting error that database not connected
8:48
on npmjs the shortid you have used is unavailable and now I'm using short unique id but this showing error so pls resolve this and what can i do.........pls check it sir
same
how to connect it to online mongoDB
14:18 terminal clear krke prompt top pr kaise kiya ? koi shortcut key hai qa
CMD K for Mac and CTRL + K for windows
console.log("tut was grea, but file naming confused me a lot");
Make video on get ip address
Just console.log req.ip ?
Hey can anyone help me... I'm getting a... TypeError: Cannot read properties of undefined (reading 'push')
bro replace Router to Router();
I am not getting the desired output for the last part ...for number of clicks....the postman is showing cannot get ......please help!!
What error are you facing?
I am also facing the same
@@AdityaSingh-yz9g it works fine in website
not with me I am not getting the website when I get request from postman
if(!body.url){ return res.json({error:"URL Needed"}) }
^
TypeError: Cannot read properties of undefined (reading 'url')
Any one ??
Included app.use(express.json()) middleware in the index.js?
and make sure that you add on the top of url roure
everytime i run this it shows this
[nodemon] app crashed - waiting for file changes before starting...
i am also getting same as URL.create is not a function
anyone following along, I'm getting entry as null and so redirect is not working, pls help
though every time I'm hitting get method visitHistory is updating
Bhaiya bahut error aa raha hai kuch samajh nahi aa raha hai ki kya kare jabki code same to same likh rahe hai
Bhai Sikh rhe ho node js ?
Ja chod dia ..
Bcoz Maine abhi start Kia hai koi tips le lu
i got this error ..ValidationError: url validation failed: shortID: Path `shortID` is required.
me too
,any solutions
@@deepeshkhatri5370 Hi short id and nano id both are not working so pleaes dont use them instead use this code:-
function generateRandomString(n) {
const str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let randomString = "";
for(let i = 0 ; i < n ; i++) {
const random = Math.floor(Math.random()*str.length);
randomString += str[random];
}
return randomString;
}
module.exports = generateRandomString;
I think you guys might have already gotten the solution since its 10 months
😅
Bhaiya yah project jaldi complete kar dijiyega please bhaiya
Hanji Zarur
when i add 1st new entry it add without error but when i add 2nd url it show error
mongoServerError: E11000 duplicate key error collection: urlShortner.urls index: shortID_1 dup key: { shortID: null }
facing same problem bro is you got any solution please share kar dena
it seems to be a problem where you are overwriting, are you sure you are creating new field instead of updating?
same error , did you resolve it ?
same error did you resolve
@@SUBZERO-vx7xs yeah i had to drop the database
19:40 I have generated several IDs with different URLs, but whenever I send get requests to those IDs (with the localhost URL as the prefix), I get redirected to the URL which is associated to the first entry in the database every single time. What could be the cause of this problem?
const shortid = req.params.shortId;
const entry = await URL.findOneAndUpdate({shortId:shortid},{
$push:{visitHistory:{timestamp:Date.now()}}
})
res.redirect(entry.redirectUrl)
//bro pass an object like {shortId:shortid} in findOneAndUpdate and if you want to pass only {shortId} then your shortId should have same name as in database because it means {shortId:shortId}
same problem , did you find any error regarding this
bhai agar null wali error aa rhi hain toh upr bhai n source code diya hain usko copy marke console m entry print karana error dikh jayegiii tumkoo tumhari..
thanks me later.. bye
Sir your react and next JS course is completed or not?
Next is completed, After Nodejs, we are going to cover React from scratch and in - depth
I want to become a full-stack developer, and initially, I only knew React.js. Upon searching for Node.js tutorials, I came across your playlist of 48 videos. These videos are incredibly informative, and I had never learned Node.js before. After watching your tutorials, I've become a fan of your teaching style. Thank you so much for guiding us in such a great way!
TypeError: Cannot read properties of null (reading 'redirectURL') , Anyone please help how to resolve it.
Exactly, I m also getting the same error..
@@satyamraj2779 Yep same error
try res.redirect('' + entry.redirectURL);
add while passing the URL. Hope it helps
Halat patli ho gyi Bhai yeh project banate banate ...
Kahin khudse banana pad Jaye Bina dekhe fir pata nhi kya ho....
It seems quite difficult right now😮
Same here.. is playlist ki Kitne videos dekh lie aapne abhi tak?
why did we made history as array of objects?
because he wanted to store multiple timestamps to determine the length of url hits and array is used to store multiple entries.
I am getting error while sending the GET request , help me
In the router folder post request is made so you should send the post request
sir postman not connect error 404 but code is same please provde same code
Check the description of this video
Sir,
How to collect ip address?
Please reply...
You get it in the req object itself. You can use that trick to create a rate limiter.
i was getting error url validation failed
same mee too getting this error
bhai Im getting error while I'm using get with the shortId help please
Kya error aaya?
@@piyushgargdev Jaab mey generate short id leke get request karna chahata huu tab error atta hey paar terminal pey kuch bhi nahi error dekhata hey..sirf postman pey request error atta hey jaab mey get karna chahata huu
same issue how to u find ans ?
@@sushantlama2178
Hua kya solve?
@@sushantlama2178 same issue , resolve hua if yes please help me
ban gaya
Code is not working
I am getting this error"url validation failed: shortid: Path `shortid` is required."
how to resolve this
same any solution?
Bhai kisi ko is theme ka name pata ho to batao yrrrr
The code gives:
res.redirect(entry.redirectURL);
^
TypeError: Cannot read properties of null (reading 'redirectURL') in latest mongoDB version .
How do I fix this?
that particular portion must be
app.get('/:shortId', async (req,res) => {
const shortId = req.params.shortId;
const entry = await URL.findOneAndUpdate({ //this part wouldn't be present for sure
shortId
},
{
$push: {
visitHistory:{ timestamp: Date.now(),},
},
}
);
res.redirect(entry.redirectURL);
});
what's the solution ? @@pranavsingh2238
Same error I am also getting. And with below solution its not working.
@@pranavsingh2238 Sorry I could not able to understand your solution. Could you please explain what should I do?
try res.redirect('' + entry.redirectURL);
bro no doubt.. you have knowledge in this... but you teach so fast.. any beginner who wants to learn from your series can't catch easily.... disappointed by this.
const err = new MongooseError(message);
^
MongooseError: Operation `urls.insertOne()` buffering timed out after 10000ms
why im getting this error? can someone help please?
Path is required like error can be solved by defining default:shortid() , in shortId: Schema
shortId: {
type:String,
unique: true,
default: shortid(),
required: true,
},
Thanks bro , was stuck on that thing for hours
so fast
Solution for this error: TypeError: Cannot read properties of null (reading 'redirectURL')
Don't miss out typing along with the url during post request. Hopefully it should work. Worked for me.
bro i did the same wrong mistake , found later though 😂😂😂
@@comparisondata2473 😂😂
means what should I use and where?
not working !
@@nityaranjan6714 hello bro have you found the solution for this
Why is all the talk about a short id library and adding extra dependency for a small work. Use below function
function generateRandomString() {
const length = 8;
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
i copied and pasted your code but still getting error. What should i enter in the argument shortID inside await function?
@@javabrain8480 your id will be the result of above function, execute above function and store it in a variable
Nice bro it worked 🎉
there is some problem with the code when i try to store a url which doesn't starts with "" or "" it works fine but when i try shout url it behave unexpectedly .
Even the code provide by you has the same problem. But when a url starts with "https:" or "http:" this problem surprisingly doesn't happen.
‼edit: it is the res.redirect( ) , it needs a protocol like http or https otherwise it consider the redirect as a relative path so just append https before the url that stored in your database if it doesn't have any protocol to to that you can use the code here:
const redirectUrl = url.redirectUrl.startsWith('') || url.redirectUrl.startsWith('')
? url.redirectUrl
: `${url.redirectUrl}`;
Bro you solve my problem, but I have 1 more problem I'm not getting code autocomplete or my vscode intellisense is not working for MongoDB what should I do?
I was hung up on res.redirect() problem from a day! this was a big help
Help Please,
Cannot GET /analytics/0AOgMEv
Resolved??
if getting this error ->
res.redirect(entry.redirectedURL);
^
TypeError: Cannot read properties of null (reading 'redirectedURL')
at D:
ode js\URL-Shortner\index.js:27:22
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.16.0
[nodemon] app crashed - waiting for file changes before starting...
solution -
res.redirect('' + entry.redirectURL);
thankss can u tell me how you got this solution?
Same Here If You Have Any Solution Than tell me ...
Did u got the solution?
Thank You Brother!!
TypeError: Cannot read properties of null (reading 'redirectURL') , Anyone please help how to resolve it.
try res.redirect('' + entry.redirectURL);