Create a Custom URL Shortener using Node.JS and MongoDB
ฝัง
- เผยแพร่เมื่อ 6 ต.ค. 2024
- ► Master NodeJS Playlist: • Master NodeJS
► Download Source Code: www.piyushgarg...
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...
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❤
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 ❤💯🔥
brother you are teach people or self study your tutorial is very fast.
thoda complex laga sab ek sath, but it was unbelievable 23 mins k video me itna sab kuch.. Vid - 21✅
Project completed ✅
Maja agya error handle karne mein ❤
Fantastic course. Node js ka feel aa gaya
bhai tune, short url project banye hai..?
i like the way you explain and also i learning how to read docs
You make really fantastic videos. I like the way of your teaching and writing the code in efficient manner. wow It's really outstanding...
Few questions:
1. 06:08 Why you used express.Router() instead of express()
2. 12:26 How does this script start working and what is nodemon
3. 11:58 What did you do here, what is this localhost port, and how are you saving the data.
Bro Just watch the tutorial from starting lec-1
bruh you don't even know the basics, I recommend watching from the start dude.
Yes bro watched the node js tutorial from starting these all the basics which you are asking here
Bhai maza aagya. awesome approach 🥳
URL Shortner created Done✅ thanks sir jee
have you completed url shortner ..?is shortid package was working..?
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
love your playlist
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😀
❤❤❤❤
ShortID no longer Supported
I like the way you explain
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
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
thanks buddy , i have full of respect for you my man , i have wasted 3 hrs to solve that fucking bug
@@devascript I too man, that’s why I posted this comment so that people watching in future won’t have to waste time on this!!
thanks man this bug was way difficult to find I just wasted quite some time on this 😡
Thank you for your great efforts! Really really awesome video.
best series ever
amazing and simple project for beginners like me✨✨
please keep up the classes free on youtube. They are so helpful.
12:50 nanoid is throwing some error, which can be fixed by dunamically importing it -
async function generateNewShortURL(req, res) {
const body = req.body;
if (!body.url) {
return res.status(400).json({
error: "URL is required."
});
}
const { nanoid } = await import('nanoid');
const shortID = nanoid(8); // Generate the short ID
await URL.create({
shortId: shortID,
redirectURL: body.url,
visitHistory: [],
});
return res.json({ id: shortID });
};
Excellent explanation❤
Now my only goal is to be perfectionist like him while my hands on keyboard. ....how much does it take to be pro in backend?
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
thanks bro for the great video
Congrats For 100k MAn
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?
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 video bhaiya what will be the next video?
Wait till 5:00PM 💪🏻
nice explanation thanks for great video!!
Sir will you upload react native course please tell me?
Interesting video, nice explanation Thanks
Thanks🧡, nice video
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.
Nice video bhaiya
i tried using nanoid and shortid for once post request works but when i try to make second its giving duplicate error, it's not generating unique shortID and get request for /:shortID also does not work
const URL = require("../models/url");
async function handleGenerateNewShortURL(req, res) {
const { nanoid } = await import("nanoid");
const body = req.body;
if (!body.url) return res.status(400).json({ error: "url is required!" });
const shortID = nanoid(8);
await URL.create({
shortId: shortID,
redirectUrl: body.url,
visitHistory: [],
});
return res.json({ id: shortID });
}
module.exports = { handleGenerateNewShortURL };
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
18:02 bhai ye entry par hover karne suggestions kaise aaya?
Koi extension ho to batao!!
sir postman not connect error 404 but code is same please provde same code
pls give some basic knowledge on mongodb also ...i feel its going fast in between
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
Thanks bro
shortid has been reprecated, any other package recommended?
ssid
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
await is not working for res.redirect
can you please help
use async function then you will be able to use await
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???
I understood the code, but I didn't understand the purpose of this app
I mean why do we need short url anyways?
kahi kahi pe bahut badi url hoti hai that's why, and hui baat linkedin ki to linkedin pe limit hai url ki to ye waha pe bhi kaam aa sakta hai
excellent
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)
where did you declare urlRoute before importing
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.
EROER: npm : The term 'npm' is not recognized as the name of a cmdlet, function, script file, or operable program.
the above error is being thrown by teminal when i am trying to execute the npm start command, pls reply ASAP sir its urgent for me!
I love it
Nice
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
ValidationError: url validation failed: redirecturl: Path `redirecturl` is required.
SyntaxError: Unexpected end of JSON input
at JSON.parse () ye error ara hai mera
I am getting confused because mongodb is not running properly in my project
make a video on mongodb module in Nodejs
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
Bhaiya yah project jaldi complete kar dijiyega please bhaiya
Hanji Zarur
again url post krne pr duplicate key bar bar aa rha hai
anyone help?
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
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 ?
how to connect it to online mongoDB
How to deploy this on server ?
what is small letters url in schema here?
Where is the second video
console.log("tut was grea, but file naming confused me a lot");
where is the ui?
I am getting error that database not connected
sir ak line code ni run ho raha
Make video on get ip address
Just console.log req.ip ?
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
can anyone provide source code ??
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.
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
Great Content
how handlegenerateshorturl function get req and res objects?
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
shortid is worked
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.
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
🔥🔥
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!
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.
Try this SOLUTION:-
res.redirect(`${entry.redirectURL}`);
exactly bhai, bug fix hua...?
Bug Fix - @abhavgoel9390 🙏🙏
let redirectUrl = entry.redirectURL;
if (!redirectUrl.startsWith('') && !redirectUrl.startsWith('')) {
redirectUrl = '' + redirectUrl;
}
console.log("Redirecting to " + redirectUrl);
return res.status(302).redirect(redirectUrl);
@@knightcore4062 ha
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
Source code address broken
Hey can anyone help me... I'm getting a... TypeError: Cannot read properties of undefined (reading 'push')
bro replace Router to Router();
I made my own nanoid 😅 cauz its not working......
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
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
Hi Piyush, I am Vishal doing Practice with the help of this video. I got stuck whiten an error which I am pasting below. could you please help me out to fixed it. Thanks!
C:\Users\Taruna\OneDrive\Desktop\SHORT-URL
ode_modules\mongoose\lib\document.js:3306
this.$__.validationError = new ValidationError(this);
^
ValidationError: url validation failed: shortId: Path `shortId` is required.
so na tumne Schema ke under shortid ko required true kiya hoga na that's right uske wajah se kuch lag rha hai
Code is not working
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
😅
14:18 terminal clear krke prompt top pr kaise kiya ? koi shortcut key hai qa
CMD K for Mac and CTRL + K for windows
Node.JS and MongoDB
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);
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