From 89499a60a502b2c1c133e0e9b15cf07b37ae3b1e Mon Sep 17 00:00:00 2001 From: daniela-idara Date: Thu, 25 Jul 2019 00:36:28 -0500 Subject: [PATCH 1/5] gets single item --- index.js | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 3d47752..dbe4178 100644 --- a/index.js +++ b/index.js @@ -9,9 +9,59 @@ const app = express(); app.use(bodyParser.json()); app.use(express.static("public")); -const thePort = 3001; +app.get('/', function (req, res){ + res.json({name: "Daniela", age:32, color:"purple"}) +}) + +// Create express routes to get all things +// response.json() the appropriate array + +//Create express routes to get one thing +//Add .get() routes for /contacts/:id, /vehicles/:id, /comments/:id, /products/:id +//add a path variable for id +//use the params.id to .find() the item from the appropriate array + +//contacts +app.get('/contacts', (req, res)=>{ + res.json(contacts) +}) +app.get('/contacts/:id', (req, res) => { + let contact = contacts.find(p=>p._id == Number(req.params.id)); + res.json(contact) +}) + +//vehicles +app.get('/vehicles', (req, res)=>{ + res.json(vehicles) +}) + +app.get('/vehicles/:id', (req, res) => { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + res.json(vehicle) +}) +//comments +app.get('/comments', (req, res)=>{ + res.json(comments) +}) +app.get('/comments/:id', (req, res) => { + let comment = comments.find(p=>p._id === Number(req.params.id)); + res.json(comment) +}) + +//products +app.get('/products', (req, res)=>{ + res.json(products) +}) + +app.get('/products/:id', (req, res) => { + let product = products.find(p=>p._id === Number(req.params.id)); + res.json(product) +}) + + +const thePort = 3001; app.listen(thePort, (err) => { if (err) { return console.log("Error", err); From a69ee60904327d0cc34cbe7acf7e76bd8325abb1 Mon Sep 17 00:00:00 2001 From: daniela-idara Date: Thu, 25 Jul 2019 23:16:37 -0500 Subject: [PATCH 2/5] complete part one --- index.js | 54 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index dbe4178..8d8a079 100644 --- a/index.js +++ b/index.js @@ -9,10 +9,6 @@ const app = express(); app.use(bodyParser.json()); app.use(express.static("public")); -app.get('/', function (req, res){ - res.json({name: "Daniela", age:32, color:"purple"}) -}) - // Create express routes to get all things // response.json() the appropriate array @@ -21,6 +17,24 @@ app.get('/', function (req, res){ //add a path variable for id //use the params.id to .find() the item from the appropriate array +//comments +app.get('/comments', (req, res)=>{ + res.json(comments) +}) + +app.get('/comments/:id', (req, res) => { + let comment = comments.find(p=>p._id === Number(req.params.id)); + res.json(comment) +}) + +app.post('/comments/', (req, res) => { + let id = comments.length + 1; + let body = req.body.body; + let postId = req.body.postId; + comments.push({"_id":id, "body":body, "postId":postId}) + res.json(comments); +}) + //contacts app.get('/contacts', (req, res)=>{ res.json(contacts) @@ -30,6 +44,15 @@ app.get('/contacts/:id', (req, res) => { res.json(contact) }) +app.post('/contacts/', (req, res) => { + let id = contacts.length + 1; + let name = req.body.name; + let occupation = req.body.occupation; + let avatar = req.body.avatar; + contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) + res.json(contacts); +}) + //vehicles app.get('/vehicles', (req, res)=>{ res.json(vehicles) @@ -40,14 +63,13 @@ app.get('/vehicles/:id', (req, res) => { res.json(vehicle) }) -//comments -app.get('/comments', (req, res)=>{ - res.json(comments) -}) - -app.get('/comments/:id', (req, res) => { - let comment = comments.find(p=>p._id === Number(req.params.id)); - res.json(comment) +app.post('/vehicles/', (req, res) => { + let id = vehicles.length + 1; + let year = req.body.year; + let make = req.body.make; + let model = req.body.model; + vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) + res.json(vehicles); }) //products @@ -60,6 +82,14 @@ app.get('/products/:id', (req, res) => { res.json(product) }) +app.post('/products/', (req, res) => { + let id = products.length + 1; + let name = req.body.name; + let description = req.body.description; + products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) + res.json(products); +}) + const thePort = 3001; app.listen(thePort, (err) => { From fbaf57e1d41cb0cbc845eac55501bd84c6e7eca6 Mon Sep 17 00:00:00 2001 From: daniela-idara Date: Fri, 26 Jul 2019 19:37:52 -0500 Subject: [PATCH 3/5] part 2 - routes --- index.js | 95 +++++----------------------------------------- routes/comments.js | 24 ++++++++++++ routes/contacts.js | 24 ++++++++++++ routes/products.js | 26 +++++++++++++ routes/vehicles.js | 26 +++++++++++++ 5 files changed, 109 insertions(+), 86 deletions(-) create mode 100644 routes/comments.js create mode 100644 routes/contacts.js create mode 100644 routes/products.js create mode 100644 routes/vehicles.js diff --git a/index.js b/index.js index 8d8a079..b648840 100644 --- a/index.js +++ b/index.js @@ -1,95 +1,18 @@ let express = require("express"); -let comments = require("./comments"); -let products = require("./products"); -let vehicles = require("./vehicles"); -let contacts = require("./contacts"); +let comments = require("./routes/comments"); +let contacts = require("./routes/contacts"); +let products = require("./routes/products"); +let vehicles = require("./routes/vehicles"); const bodyParser = require("body-parser"); const app = express(); + app.use(bodyParser.json()); app.use(express.static("public")); - -// Create express routes to get all things -// response.json() the appropriate array - -//Create express routes to get one thing -//Add .get() routes for /contacts/:id, /vehicles/:id, /comments/:id, /products/:id -//add a path variable for id -//use the params.id to .find() the item from the appropriate array - -//comments -app.get('/comments', (req, res)=>{ - res.json(comments) -}) - -app.get('/comments/:id', (req, res) => { - let comment = comments.find(p=>p._id === Number(req.params.id)); - res.json(comment) -}) - -app.post('/comments/', (req, res) => { - let id = comments.length + 1; - let body = req.body.body; - let postId = req.body.postId; - comments.push({"_id":id, "body":body, "postId":postId}) - res.json(comments); -}) - -//contacts -app.get('/contacts', (req, res)=>{ - res.json(contacts) -}) -app.get('/contacts/:id', (req, res) => { - let contact = contacts.find(p=>p._id == Number(req.params.id)); - res.json(contact) -}) - -app.post('/contacts/', (req, res) => { - let id = contacts.length + 1; - let name = req.body.name; - let occupation = req.body.occupation; - let avatar = req.body.avatar; - contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) - res.json(contacts); -}) - -//vehicles -app.get('/vehicles', (req, res)=>{ - res.json(vehicles) -}) - -app.get('/vehicles/:id', (req, res) => { - let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); - res.json(vehicle) -}) - -app.post('/vehicles/', (req, res) => { - let id = vehicles.length + 1; - let year = req.body.year; - let make = req.body.make; - let model = req.body.model; - vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) - res.json(vehicles); -}) - -//products -app.get('/products', (req, res)=>{ - res.json(products) -}) - -app.get('/products/:id', (req, res) => { - let product = products.find(p=>p._id === Number(req.params.id)); - res.json(product) -}) - -app.post('/products/', (req, res) => { - let id = products.length + 1; - let name = req.body.name; - let description = req.body.description; - products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) - res.json(products); -}) - +app.use(comments); +app.use(contacts); +app.use(products); +app.use(vehicles); const thePort = 3001; app.listen(thePort, (err) => { diff --git a/routes/comments.js b/routes/comments.js new file mode 100644 index 0000000..f0c0d7d --- /dev/null +++ b/routes/comments.js @@ -0,0 +1,24 @@ +const express = require("express"); +const router = express.Router(); + +let comments = require("../comments") + +//comments +router.get('/comments', (req, res)=>{ + res.json(comments) +}) + +router.get('/comments/:id', (req, res) => { + let comment = comments.find(p=>p._id === Number(req.params.id)); + res.json(comment) +}) + +router.post('/comments/', (req, res) => { + let id = comments.length + 1; + let body = req.body.body; + let postId = req.body.postId; + comments.push({"_id":id, "body":body, "postId":postId}) + res.json(comments); +}) + +module.exports = router; diff --git a/routes/contacts.js b/routes/contacts.js new file mode 100644 index 0000000..3ada9d9 --- /dev/null +++ b/routes/contacts.js @@ -0,0 +1,24 @@ +const express = require("express"); +const router = express.Router(); + +let contacts = require("../contacts") + +//contacts +router.get('/contacts', (req, res)=>{ + res.json(contacts) + }) + router.get('/contacts/:id', (req, res) => { + let contact = contacts.find(p=>p._id == Number(req.params.id)); + res.json(contact) + }) + + router.post('/contacts/', (req, res) => { + let id = contacts.length + 1; + let name = req.body.name; + let occupation = req.body.occupation; + let avatar = req.body.avatar; + contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) + res.json(contacts); + }) + + module.exports = router; \ No newline at end of file diff --git a/routes/products.js b/routes/products.js new file mode 100644 index 0000000..4c0ab34 --- /dev/null +++ b/routes/products.js @@ -0,0 +1,26 @@ +const express = require("express"); +const router = express.Router(); + +let products = require("../products"); + + +//products +router.get('/products', (req, res)=>{ + res.json(products) + }) + + router.get('/products/:id', (req, res) => { + let product = products.find(p=>p._id === Number(req.params.id)); + res.json(product) + }) + + router.post('/products/', (req, res) => { + let id = products.length + 1; + let name = req.body.name; + let description = req.body.description; + products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) + res.json(products); + }) + + +module.exports = router; diff --git a/routes/vehicles.js b/routes/vehicles.js new file mode 100644 index 0000000..7fbde3b --- /dev/null +++ b/routes/vehicles.js @@ -0,0 +1,26 @@ +const express = require("express"); +const router = express.Router(); + +let vehicles = require("../vehicles"); + +//vehicles +router.get('/vehicles', (req, res)=>{ + res.json(vehicles) + }) + + router.get('/vehicles/:id', (req, res) => { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + res.json(vehicle) + }) + + router.post('/vehicles/', (req, res) => { + let id = vehicles.length + 1; + let year = req.body.year; + let make = req.body.make; + let model = req.body.model; + vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) + res.json(vehicles); + }) + + +module.exports = router; From 810149b62b782b2d6de5dfdaa44e64cbab056e66 Mon Sep 17 00:00:00 2001 From: daniela-idara Date: Fri, 26 Jul 2019 20:40:01 -0500 Subject: [PATCH 4/5] part 3 - controllers + routes setup --- controllers/comments.js | 36 ++++++++++++++++++++++++++++++++++++ controllers/contacts.js | 38 ++++++++++++++++++++++++++++++++++++++ controllers/products.js | 36 ++++++++++++++++++++++++++++++++++++ controllers/vehicles.js | 40 ++++++++++++++++++++++++++++++++++++++++ routes/comments.js | 21 ++++----------------- routes/contacts.js | 22 ++++------------------ routes/products.js | 23 ++++------------------- routes/vehicles.js | 22 ++++------------------ 8 files changed, 166 insertions(+), 72 deletions(-) create mode 100644 controllers/comments.js create mode 100644 controllers/contacts.js create mode 100644 controllers/products.js create mode 100644 controllers/vehicles.js diff --git a/controllers/comments.js b/controllers/comments.js new file mode 100644 index 0000000..911cf92 --- /dev/null +++ b/controllers/comments.js @@ -0,0 +1,36 @@ +let comments = require("../comments") + +//get - all comments +exports.list = function list(req, res) { + return res.json(comments); +} + +//get - one comment +exports.show = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + res.json(comment) +} + +//post +exports.create = function list(req, res) { + let id = comments.length + 1; + let body = req.body.body; + let postId = req.body.postId; + comments.push({"_id":id, "body":body, "postId":postId}) + res.json(comments); +} + +//put +exports.update = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + comment.body = body.body; + comment.postId = body.postId; + res.json(comment) +} + +//delete +exports.remove = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + comment.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/contacts.js b/controllers/contacts.js new file mode 100644 index 0000000..5ab478d --- /dev/null +++ b/controllers/contacts.js @@ -0,0 +1,38 @@ +let contacts = require("../contacts"); + +//get - all contacts +exports.list = function list(req, res) { + return res.json(contacts); +} + +//get - one contact +exports.show = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + res.json(contact) +} + +//post +exports.create = function list(req, res) { + let id = contacts.length + 1; + let name = req.body.name; + let occupation = req.body.occupation; + let avatar = req.body.avatar; + contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) + res.json(contacts); +} + +//put +exports.update = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + contact.name = body.name; + contact.occupation = body.occupation; + contact.avatar = body.avatar; + res.json(contact) +} + +//delete +exports.remove = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + contact.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/products.js b/controllers/products.js new file mode 100644 index 0000000..13f8489 --- /dev/null +++ b/controllers/products.js @@ -0,0 +1,36 @@ +let products = require("../products"); + +//get - all products +exports.list = function list(req, res) { + return res.json(products); +} + +//get - one product +exports.show = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + res.json(product) +} + +//post +exports.create = function list(req, res) { + let id = products.length + 1; + let name = req.body.name; + let description = req.body.description; + products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) + res.json(products); +} + +//put +exports.update = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + product.name = body.name; + product.description = body.description; + res.json(product) +} + +//delete +exports.remove = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + product.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/vehicles.js b/controllers/vehicles.js new file mode 100644 index 0000000..e46da4a --- /dev/null +++ b/controllers/vehicles.js @@ -0,0 +1,40 @@ +let vehicles = require("../vehicles"); + + +//get - all vehicles +exports.list = function list(req, res) { + return res.json(vehicles); +} + +//get - one vehicle +exports.show = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + res.json(vehicle) +} + +//post +exports.create = function list(req, res) { + let id = vehicles.length + 1; + let year = req.body.year; + let make = req.body.make; + let model = req.body.model; + vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) + res.json(vehicles); +} + +//put +exports.update = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + vehicle.year = body.year; + vehicle.make = body.make; + vehicle.model = body.model; + res.json(vehicle) +} + +//delete +exports.remove = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + vehicle.isActive = false; + res.send("deleted"); +} + diff --git a/routes/comments.js b/routes/comments.js index f0c0d7d..49b8c9a 100644 --- a/routes/comments.js +++ b/routes/comments.js @@ -1,24 +1,11 @@ const express = require("express"); const router = express.Router(); +const {list,show,create} = require("../controllers/comments"); -let comments = require("../comments") //comments -router.get('/comments', (req, res)=>{ - res.json(comments) -}) - -router.get('/comments/:id', (req, res) => { - let comment = comments.find(p=>p._id === Number(req.params.id)); - res.json(comment) -}) - -router.post('/comments/', (req, res) => { - let id = comments.length + 1; - let body = req.body.body; - let postId = req.body.postId; - comments.push({"_id":id, "body":body, "postId":postId}) - res.json(comments); -}) +router.get('/comments', list); +router.get('/comments/:id', show); +router.post('/comments/', create); module.exports = router; diff --git a/routes/contacts.js b/routes/contacts.js index 3ada9d9..759c57c 100644 --- a/routes/contacts.js +++ b/routes/contacts.js @@ -1,24 +1,10 @@ const express = require("express"); const router = express.Router(); - -let contacts = require("../contacts") +const {list,show,create} = require("../controllers/contacts"); //contacts -router.get('/contacts', (req, res)=>{ - res.json(contacts) - }) - router.get('/contacts/:id', (req, res) => { - let contact = contacts.find(p=>p._id == Number(req.params.id)); - res.json(contact) - }) - - router.post('/contacts/', (req, res) => { - let id = contacts.length + 1; - let name = req.body.name; - let occupation = req.body.occupation; - let avatar = req.body.avatar; - contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) - res.json(contacts); - }) +router.get('/contacts', list); +router.get('/contacts/:id', show); +router.post('/contacts/', create); module.exports = router; \ No newline at end of file diff --git a/routes/products.js b/routes/products.js index 4c0ab34..9055fd7 100644 --- a/routes/products.js +++ b/routes/products.js @@ -1,26 +1,11 @@ const express = require("express"); const router = express.Router(); - -let products = require("../products"); - +const {list,show,create} = require("../controllers/products"); //products -router.get('/products', (req, res)=>{ - res.json(products) - }) - - router.get('/products/:id', (req, res) => { - let product = products.find(p=>p._id === Number(req.params.id)); - res.json(product) - }) - - router.post('/products/', (req, res) => { - let id = products.length + 1; - let name = req.body.name; - let description = req.body.description; - products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) - res.json(products); - }) +router.get('/products', list); +router.get('/products/:id', show); +router.post('/products/', create); module.exports = router; diff --git a/routes/vehicles.js b/routes/vehicles.js index 7fbde3b..c459291 100644 --- a/routes/vehicles.js +++ b/routes/vehicles.js @@ -1,26 +1,12 @@ const express = require("express"); const router = express.Router(); +const {list,show,create} = require("../controllers/vehicles"); -let vehicles = require("../vehicles"); //vehicles -router.get('/vehicles', (req, res)=>{ - res.json(vehicles) - }) - - router.get('/vehicles/:id', (req, res) => { - let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); - res.json(vehicle) - }) - - router.post('/vehicles/', (req, res) => { - let id = vehicles.length + 1; - let year = req.body.year; - let make = req.body.make; - let model = req.body.model; - vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) - res.json(vehicles); - }) +router.get('/vehicles', list); +router.get('/vehicles/:id', show); +router.post('/vehicles/', create); module.exports = router; From 35b410f74c546421d31cd6c1c0f52ec3f69c5f33 Mon Sep 17 00:00:00 2001 From: daniela-idara Date: Sun, 28 Jul 2019 12:14:54 -0500 Subject: [PATCH 5/5] update README with part 4 --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index b26b556..7655487 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,14 @@ We don't need to worry about update or delete. * Import and use the controller functions in the appropiate Router # Part 4 - Database +* https://github.com/AustinCodingAcademy/express-mongodb +* Create a database somewhere for advanced-express-practice +* Create a new file database.js, implement the code for MongoClient and connect() +* Implement the mongodb client tool into your controllers for list, show, create +* Use insertMany() for create and find() for list and show +* How are your controllers going to get access to const db = client.db("advanced-express-practice"); + +# Part 5 - Mongoose * In server/index.js, import and use mongoose. Connect to a database "advanced-express-practice" * Create the mongoose models for Contact, Vehicle, Comment Product * CommentModel - body