Skip to content

Commit 0ae8424

Browse files
started modulation to improve routing
1 parent 36711b6 commit 0ae8424

File tree

11 files changed

+217
-149
lines changed

11 files changed

+217
-149
lines changed

notes.txt

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,2 @@
1-
Design Issues:
2-
3-
MongoDB- 3 collections Users,Careers,Assessments
4-
User Collection- collects info of users along with passwords and checks to enabal if an account is pre-existing
5-
Careers Collection- collects and sorts data on basis of certain keys
6-
Assessments Collection- Questions to be given
7-
8-
Get method pages:
9-
error.ejs
10-
home.ejs
11-
Careers.ejs
12-
assessment.ejs
13-
login.ejs
14-
register.ejs
15-
Career.ejs
16-
17-
Post method pages:
18-
login.ejs
19-
register.ejs
20-
assessment.ejs
21-
22-
Data analysis for Assessments for every user required
23-
24-
Registration page to Login
25-
Login Page to Profile
26-
27-
Data needed the most for career pages
28-
1. Career name
29-
2. Career description
30-
3. Career requirements
31-
4. Career salary
32-
5. Career growth rate
1+
Design Modifications:
2+
Need to seperate profile and career routing in index.js

routes/careerRoutes.js

Whitespace-only changes.

index.js renamed to routes/index.js

Lines changed: 62 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,29 @@ const path= require('path');
55
const port=8080;
66

77
//we need to create a folder nameed public to serve static files such as html,css,ejs..
8-
app.use(express.static(path.join(__dirname,"/public/CSS")));
9-
app.use(express.static(path.join(__dirname,"/public/JS")));
8+
app.use(express.static(path.join(__dirname,"../public/CSS")));
9+
app.use(express.static(path.join(__dirname,"../public/JS")));
1010

1111
//using of ejs which is already installed in express folder hence we need to use it using app.set()
1212
//view => templates
1313
app.set("view engine", "ejs");
1414

1515
//setting path to run server globally and to avoid views loading from root directory when it is located in a leaf directory
16-
app.set("views",path.join(__dirname,"/views"));
16+
app.set("views",path.join(__dirname,"../views"));
1717

1818
//to get the data from the post method
19+
//app.use(bodyParser.urlencoded({ extended: true }));
20+
1921
app.use(express.urlencoded({extended:true}));
2022

23+
//importing routes
24+
// const careerRoutes = require('./routes/careerRoutes');
25+
// const profileRoutes = require('./routes/profileRoutes');
26+
27+
// // Use routes
28+
// app.use('/careers', careerRoutes);
29+
// app.use('/profile', profileRoutes);
30+
2131
//importing mongoose
2232
const mongoose = require('mongoose');
2333
main()
@@ -64,7 +74,7 @@ app.listen(port,()=>{
6474
//home route
6575
app.get("/",(req,res)=>
6676
{
67-
res.render("home.ejs",{port});
77+
res.render("home.ejs",{logged:false,uname:undefined});
6878
});
6979

7080
//careers route
@@ -73,7 +83,7 @@ app.get("/careers",(req,res)=>{
7383
});
7484

7585
//Careers route
76-
app.get("/c/:industry",(req,res)=>{
86+
app.get("/industry/:industry",(req,res)=>{
7787
Career.find({cindustry:req.params.industry})
7888
.then((careers)=>
7989
{
@@ -83,11 +93,11 @@ app.get("/c/:industry",(req,res)=>{
8393
});
8494

8595
// individual career route
86-
app.get("/ca/:career",(req,res)=>{
87-
Career.findOne({cname:req.params.career})
96+
app.get("/career/:career",(req,res)=>{
97+
Career.find({cname:req.params.career})
8898
.then((results)=>
8999
{
90-
res.render("career.ejs",{career:results[0],cin:results[0].cindustry.join(", ")});
100+
res.render("career.ejs",{data:results[0]});
91101
})
92102
.catch((err)=>
93103
{
@@ -103,37 +113,67 @@ app.get("/login",(req,res)=>{
103113
//Login Route post request to get data and check if user exists
104114
app.post("/login",(req,res)=>
105115
{
106-
let username,password=req.body;
116+
let {username,password}=req.body;
107117
console.log(username,password);
108-
let check=User.findOne({cname:username})
109-
.then((res)=>
118+
User.findOne({cname:username})
119+
.then((user)=>
110120
{
111-
if (res.password!==password)
121+
if(!user)
112122
{
113-
res.render("error.ejs",{data:"Passwords doesnt match"});
123+
return res.render("error.ejs",{data:"User doesn't exist"});
114124
}
115-
else
125+
if (user.password!==password)
116126
{
117-
res.redirect("home.ejs");
127+
return res.render("error.ejs",{data:"Passwords doesnt match"});
118128
}
129+
res.render("home.ejs",{logged:true,uname:username});
119130
})
120-
.catch((err)=>{res.render("error.ejs",{data:"User doesn't exist"})});
131+
.catch((err)=>
132+
{
133+
res.render("error.ejs",{data:err});
134+
});
121135
});
122136

123137
//registration route
124138
app.get("/register",(req,res)=>{
125-
res.render("register.ejs",{port});
139+
res.render("register.ejs",{logged:false});
126140
});
127141

128142
//registration route to check if user exists before
129143
app.post("/register",(req,res)=>
130144
{
131-
let {username,email,password,confirmPassword}=req.body;
132-
if (password !== confirmPassword) {
145+
let {username,mail,pass,confirmPass}=req.body;
146+
if (pass !== confirmPass) {
133147
return res.render('error.ejs', { data: 'Passwords do not match' });
134148
}
135-
else
136-
{
149+
User.findOne({name:username})
150+
.then((user)=>{
151+
if(user)
152+
{
153+
return res.render("error.ejs",{data:"User already exists"});
154+
}
155+
const newUser = new User({ name: username, email: mail, password: pass });
156+
return newUser.save();
157+
}).then(()=>{
158+
res.render("login.ejs",{logged:false})
159+
})
160+
.catch((err)=>{
161+
console.log(err);
162+
});
163+
});
137164

138-
}
165+
//profile route
166+
app.get("/profile/:user",(req,res)=>{
167+
let uname=req.params.user;
168+
User.findOne({name:uname})
169+
.then((results)=>{
170+
res.render("profile.ejs",{user:results});
171+
})
172+
.catch((err)=>{
173+
res.render("error.ejs",{data:err});
174+
});
175+
});
176+
177+
app.get("/logout",(req,res)=>{
178+
res.render("home.ejs",{logged:false,uname:undefined});
139179
});

routes/models/Career.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const mongoose = require('mongoose');
2+
main()
3+
.then(() => {
4+
console.log("Career Schema connected");
5+
})
6+
.catch((err) => {
7+
console.log(err);
8+
});
9+
async function main(){
10+
await mongoose.connect('mongodb://127.0.0.1:27017/RTSR');
11+
}
12+
//creating schema for career collection
13+
const careerSchema=new mongoose.Schema({
14+
cname:String,
15+
cdesc:String,
16+
crequirements:String,
17+
csalary:Number,
18+
cgrowthrate:Number,
19+
cindustry:Array
20+
});

routes/models/User.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const mongoose = require('mongoose');
2+
main()
3+
.then(() => {
4+
console.log("User schema connected");
5+
})
6+
.catch((err) => {
7+
console.log(err);
8+
});
9+
async function main(){
10+
await mongoose.connect('mongodb://127.0.0.1:27017/RTSR');
11+
}
12+
//creating schema for user collection
13+
const userSchema=new mongoose.Schema
14+
(
15+
{
16+
name:String,
17+
email:String,
18+
password:String
19+
}
20+
);

routes/userRoutes.js

Whitespace-only changes.

views/career.ejs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
<title>CareerXplorer:<%= career.cname %></title>
6+
<title>CareerXplorer: <%= data.cname %></title>
77
<link rel="preconnect" href="https://fonts.googleapis.com">
88
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
99
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;700&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
@@ -92,27 +92,27 @@
9292
<span class="C">Career</span><span class="X">Xplorer</span>
9393
</div>
9494
<div class="title">
95-
<h1><%=career.cname%></h1>
95+
<h1><%=data.cname%></h1>
9696
</div>
9797
</div>
9898
<div class="content">
9999
<div class="section requirements">
100100
<h2>Requirements</h2>
101-
<h4><%= career.crequirements %></h4>
101+
<h4><%= data.crequirements %></h4>
102102
</div>
103103
<div class="section industries">
104104
<h2>Industries</h2>
105-
<h4><%= cin %></h4>
105+
<h4><%= data.cindustry.join(", ") %></h4>
106106
</div>
107107
<div class="section income">
108108
<h2>Salary</h2>
109-
<h4>$<%= career.csalary %> per year</h4>
109+
<h4>$<%= data.csalary %> per year</h4>
110110
<h2>Growth Rate</h2>
111-
<h4><%= career.cgrowthrate %></h4>
111+
<h4><%= data.cgrowthrate %></h4>
112112
</div>
113113
<div class="section desc">
114114
<h2>Career Description</h2>
115-
<p><%= career.cdesc %></p>
115+
<p><%= data.cdesc %></p>
116116
</div>
117117
</div>
118118
</div>

0 commit comments

Comments
 (0)