-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
124 lines (109 loc) · 3.46 KB
/
index.js
File metadata and controls
124 lines (109 loc) · 3.46 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//Create express app
const express = require('express')
const app = express()
const port = process.env.PORT || 5000
//dotenv
require('dotenv').config()
//DB credentials
const dbUserName = process.env.DBUSERNAME
const dbPassword = process.env.DBPASSWORD
//mongo client
//mongo connection string
const mongoose = require('mongoose')
const connectionString = `mongodb+srv://${dbUserName}:${dbPassword}@profilesapp.1nj0v.mongodb.net/profilesapp?retryWrites=true&w=majority`
app.use(express.json())
mongoose.connect(connectionString,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false
}, (err) => {
if (err) {
console.log(err)
} else {
console.log('Database connected')
}
} )
//Profile Schema
const profileSchema = new mongoose.Schema({
title: String,
name: String,
email: String,
country: String
})
const Profile = mongoose.model("Profile", profileSchema)
//POST request to /profiles to create a new profile
app.post("/profilesapp", (req, res) => {
//create a new profile and save to db
// retrieve new profile details from req.body
const profile = req.body.profile
Profile.create({
title: profile.title,
name: profile.name,
email: profile.email,
country: profile.country
}, (err, newProfile) => {
if(err) {
return res.status(500).json({ message: err})
} else {
return res.status(200).json({ message: "New profile added", newProfile})
}
})
})
//GET request to /profiles to fetch all profiles
app.get('/profilesapp', (req, res) => {
//fetch all profiles
Profile.find({}, (err, profiles) => {
if (err) {
return res.status(500).json({ message: err})
} else {
return res.status(200).json({profiles})
}
})
//send response to client
})
//GET request to /profiles/:id to fetch specific profile
app.get('/profilesapp/:id', (req, res) => {
Profile.findById(req.params.id, (err, profile) => {
if (err) {
return res.status(500).json({ message: err})
} else if (!profile) {
return res.status(404).json({ message: "Profile not found"})
} else {
return res.status(200).json({profile})
}
})
})
//PUT request to /profiles/:id to update specific profile
app.put('/profilesapp/:id', (req, res) => {
Profile.findByIdAndUpdate(req.params.id, {
title: req.body.title,
name: req.body.name,
email: req.body.email,
country: req.body.country
}, (err, profile) => {
if (err) {
return res.status(500).json({ message: err})
} else {
profile.save((err, saveProfile) => {
if (err) {
return res.status(400).json({ message: err})
} else {
return res.status(200).json({ message: "Profile updated successfully"})
}
})
}
})
})
//DELETE request to /profiles/:id to delete a profile
app.delete('/profilesapp/:id', (req, res) => {
Profile.findByIdAndDelete(req.params.id, (err, profile) => {
if (err) {
return res.status(500).json({ message: err})
} else if (!profile) {
return res.status(404).json({ message: "Profile not found"})
} else {
return res.status(200).json({ message: "Profile deleted"})
}
})
})
app.listen(port, () => console.log(`Server is listening on port ${port}`))