Skip to content

Commit 8f91c98

Browse files
user schema updated
1 parent 81aa484 commit 8f91c98

File tree

6 files changed

+130
-64
lines changed

6 files changed

+130
-64
lines changed

index.js

+26-13
Original file line numberDiff line numberDiff line change
@@ -40,29 +40,41 @@ app.get('/api/users/:id', (request, response, next) => {
4040

4141
app.delete('/api/users/:id', (request, response, next) => {
4242
const id = request.params.id
43-
User.findByIdAndRemove(id)
43+
44+
User.findById(id)
4445
.then(user => {
45-
response.status(204).end()
46+
if (user) {
47+
User.findByIdAndRemove(id)
48+
.then(user => {
49+
console.log("deleted user ->", user)
50+
response.json({ "message": `user with id ${id} deleted successfully` })
51+
}).catch(error => next(error))
52+
}
53+
else {
54+
response.status(404).json({ "error": `user with id ${id} does'nt exists` }).end()
55+
}
4656
}).catch(error => next(error))
4757
})
4858

49-
app.post('/api/users/', (request, response) => {
59+
app.post('/api/users/', (request, response, next) => {
5060
const user = request.body
51-
61+
if (!user.fname || !user.lname || !user.role || !user.password || !user.email ) {
62+
return response.status(400).json({ error: 'content missing' })
63+
}
5264
const newUser = new User({
5365
"fname": user.fname,
5466
"lname": user.lname,
67+
"email": user.email,
68+
"role": user.role,
5569
"password": user.password
5670
})
57-
71+
5872
newUser.save()
5973
.then(result => {
6074
response.json(newUser).status(200).end()
61-
}).catch(error => {
62-
response.json({error: error})
63-
response.status(500).end()
6475
})
65-
})
76+
.catch(error => next(error))
77+
})
6678

6779
app.put('/api/users/:id', (request, response, next) => {
6880
const user = request.body
@@ -73,8 +85,8 @@ app.put('/api/users/:id', (request, response, next) => {
7385
"password": user.password
7486
}
7587

76-
// bydefault updatedUser returns old res, optional param "{new : true}" fixes it, returns updated data
77-
User.findByIdAndUpdate(request.params.id, updatedUserData, {new : true})
88+
// by default updatedUser returns old res, optional param "{new : true}" fixes it, returns updated data
89+
User.findByIdAndUpdate(request.params.id, updatedUserData, { new: true })
7890
.then(updatedUser => {
7991
response.json(updatedUser)
8092
}).catch(error => next(error))
@@ -91,8 +103,9 @@ const errorHandler = (error, request, response, next) => {
91103

92104
if (error.name === 'CastError') {
93105
return response.status(400).send({ error: 'malformatted id' })
94-
}
95-
106+
} else if (error.name === 'ValidationError') {
107+
return response.status(400).json({ error: error.message })
108+
}
96109
next(error)
97110
}
98111

models/details.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const mongoose = require('mongoose')
2+
3+
const url = process.env.MONGODB_URI
4+
5+
console.log("connecting to", url);
6+
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })
7+
.then(result => {
8+
console.log("connected to mongodb", url);
9+
}).catch(error => {
10+
console.log("error while connecting to mongodb", error);
11+
})
12+
13+
const userSchema = new mongoose.Schema({
14+
email: String,
15+
fname: String,
16+
lname: String,
17+
password: String,
18+
})
19+
20+
userSchema.set('toJSON', {
21+
transform: (document, returnedObject) => {
22+
returnedObject.id = returnedObject._id.toString()
23+
delete returnedObject._id
24+
delete returnedObject.__v
25+
delete returnedObject.password
26+
}
27+
})
28+
29+
module.exports = mongoose.model('User', userSchema)

models/user.js

+46-22
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,53 @@
1-
const mongoose = require('mongoose')
1+
const mongoose = require("mongoose");
22

3-
const url = process.env.MONGODB_URI
3+
const url = process.env.MONGODB_URI;
44

55
console.log("connecting to", url);
6-
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })
7-
.then(result => {
8-
console.log("connected to mongodb", url);
9-
}).catch(error => {
10-
console.log("error while connecting to mongodb", error);
11-
})
6+
mongoose
7+
.connect(url, {
8+
useNewUrlParser: true,
9+
useUnifiedTopology: true,
10+
useFindAndModify: false,
11+
useCreateIndex: true,
12+
})
13+
.then((result) => {
14+
console.log("connected to mongodb", url);
15+
})
16+
.catch((error) => {
17+
console.log("error while connecting to mongodb", error);
18+
});
1219

1320
const userSchema = new mongoose.Schema({
14-
email: String,
15-
fname: String,
16-
lname: String,
17-
password: String,
18-
})
21+
email: {
22+
type: "String",
23+
required: true,
24+
},
25+
fname: {
26+
type: "String",
27+
required: true,
28+
},
29+
lname: {
30+
type: "String",
31+
required: true,
32+
},
33+
role: {
34+
type: "String",
35+
required: true,
36+
},
37+
password: {
38+
type: "String",
39+
required: true,
40+
minlength:8
41+
},
42+
});
1943

20-
userSchema.set('toJSON', {
21-
transform: (document, returnedObject) => {
22-
returnedObject.id = returnedObject._id.toString()
23-
delete returnedObject._id
24-
delete returnedObject.__v
25-
delete returnedObject.password
26-
}
27-
})
44+
userSchema.set("toJSON", {
45+
transform: (document, returnedObject) => {
46+
returnedObject.id = returnedObject._id.toString();
47+
delete returnedObject._id;
48+
delete returnedObject.__v;
49+
delete returnedObject.password;
50+
},
51+
});
2852

29-
module.exports = mongoose.model('User', userSchema)
53+
module.exports = mongoose.model("User", userSchema);

mongo.js

+27-27
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
1-
const mongoose = require('mongoose')
1+
// const mongoose = require('mongoose')
22

3-
if (process.argv.length < 3) {
4-
console.log('Please provide the password as an argument: node mongo.js <password>')
5-
process.exit(1)
6-
}
3+
// if (process.argv.length < 3) {
4+
// console.log('Please provide the password as an argument: node mongo.js <password>')
5+
// process.exit(1)
6+
// }
77

8-
const url =
9-
`mongodb+srv://seekersdb:[email protected]/users?retryWrites=true&w=majority`
8+
// const url =
9+
// `mongodb+srv://seekersdb:[email protected]/users?retryWrites=true&w=majority`
1010

11-
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })
11+
// mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })
1212

13-
const userSchema = new mongoose.Schema({
14-
email: String,
15-
password: String,
16-
})
13+
// const userSchema = new mongoose.Schema({
14+
// email: String,
15+
// password: String,
16+
// })
1717

18-
User = mongoose.model('User', userSchema)
18+
// User = mongoose.model('User', userSchema)
1919

20-
const user = new User({
21-
22-
password: 'changeme'
23-
})
20+
// const user = new User({
21+
// email: '[email protected]',
22+
// password: 'changeme'
23+
// })
2424

25-
User.find({}).then(result => {
26-
result.forEach(user => {
27-
console.log(user)
28-
})
29-
mongoose.connection.close()
30-
})
25+
// User.find({}).then(result => {
26+
// result.forEach(user => {
27+
// console.log(user)
28+
// })
29+
// mongoose.connection.close()
30+
// })
3131

3232

33-
// user.save().then(result => {
34-
// console.log('user details! are saved')
35-
// mongoose.connection.close()
36-
// })
33+
// // user.save().then(result => {
34+
// // console.log('user details! are saved')
35+
// // mongoose.connection.close()
36+
// // })

requests/deleteUser.rest

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
DELETE http://localhost:3001/api/users/6075bf35d385591fb0a1acb4
1+
DELETE http://localhost:3001/api/users/6075b1bd4ce1ad23c8b47ce2

requests/getUsers.rest

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ GET http://localhost:3001/api/users/
44
###
55

66
# Get single user
7-
GET http://localhost:3001/api/users/6075bf35d385591fb0a1acb4
7+
GET http://localhost:3001/api/users/6075b1bd4ce1ad23c8b47ce2

0 commit comments

Comments
 (0)