-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
28 lines (25 loc) · 822 Bytes
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const express = require("express");
const mongoose=require("mongoose");
const ShortUrl=require('./models/url')
const app=express();
mongoose.connect('mongodb://127.0.0.1/urlShortener',{
useNewUrlParser:true,useUnifiedTopology:true
})
app.set('view engine','ejs');
app.use(express.urlencoded({extended:false}))
app.get('/',async(req,res)=>{
const shortUrls=await ShortUrl.find()
res.render('index',{shortUrls:shortUrls})
});
app.post('/shortUrls',async(req,res)=>{
await ShortUrl.create({full:req.body.fullUrl})
res.redirect('/')
})
app.get('/:shortUrl', async (req, res) => {
const shortUrl = await ShortUrl.findOne({ short: req.params.shortUrl })
if (shortUrl == null) return res.sendStatus(404)
shortUrl.clicks++
shortUrl.save()
res.redirect(shortUrl.full)
})
app.listen(process.env.PORT || 5000);