-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproduct.controller.js
120 lines (112 loc) · 3.56 KB
/
product.controller.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
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
const Product = require('./product.model.js');
//Create new Product
exports.create = (req, res) => {
// Request validation
if(!req.body) {
return res.status(400).send({
message: "Product content can not be empty"
});
}
// Create a Product
const product = new Product({
title: req.body.title || "No product title",
description: req.body.description,
price: req.body.price,
company: req.body.company
});
// Save Product in the database
product.save()
.then(data => {
res.send(data);
}).catch(err => {
res.status(500).send({
message: err.message || "Something wrong while creating the product."
});
});
};
// Retrieve all products from the database.
exports.findAll = (req, res) => {
Product.find()
.then(products => {
res.send(products);
}).catch(err => {
res.status(500).send({
message: err.message || "Something wrong while retrieving products."
});
});
};
// Find a single product with a productId
exports.findOne = (req, res) => {
Product.findById(req.params.productId)
.then(product => {
if(!product) {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
res.send(product);
}).catch(err => {
if(err.kind === 'ObjectId') {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
return res.status(500).send({
message: "Something wrong retrieving product with id " + req.params.productId
});
});
};
// Update a product
exports.update = (req, res) => {
// Validate Request
if(!req.body) {
return res.status(400).send({
message: "Product content can not be empty"
});
}
// Find and update product with the request body
Product.findByIdAndUpdate(req.params.productId, {
title: req.body.title || "No product title",
description: req.body.description,
price: req.body.price,
company: req.body.company
}, {new: true})
.then(product => {
if(!product) {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
res.send(product);
}).catch(err => {
if(err.kind === 'ObjectId') {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
return res.status(500).send({
message: "Something wrong updating note with id " + req.params.productId
});
});
};
// Delete a note with the specified noteId in the request
exports.delete = (req, res) => {
Product.findByIdAndRemove(req.params.productId)
.then(product => {
if(!product) {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
res.send({message: "Product deleted successfully!"});
}).catch(err => {
if(err.kind === 'ObjectId' || err.name === 'NotFound') {
return res.status(404).send({
message: "Product not found with id " + req.params.productId
});
}
return res.status(500).send({
message: "Could not delete product with id " + req.params.productId
});
});
};