// backend const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true }); const blogSchema = new mongoose.Schema({ title: String, image: String, body: String, created: { type: Date, default: Date.now } }); const Blog = mongoose.model("Blog", blogSchema); app.use(bodyParser.urlencoded({ extended: true })); app.set("view engine", "ejs"); app.get("/", (req, res) => { res.redirect("/blogs"); }); // INDEX ROUTE app.get("/blogs", (req, res) => { Blog.find({}, (err, blogs) => { if(err) { console.log(err); } else { res.render("index", {blogs: blogs}); } }); }); // NEW ROUTE app.get("/blogs/new", (req, res) => { res.render("new"); }); // CREATE ROUTE app.post("/blogs", (req, res) => { Blog.create(req.body.blog, (err, newBlog) => { if(err) { res.render("new"); } else { // redirect to index res.redirect("/blogs"); } }); }); // SHOW ROUTE app.get("/blogs/:id", (req, res) => { Blog.findById(req.params.id, (err, foundBlog) => { if(err) { res.redirect("/blogs"); } else { res.render("show", {blog: foundBlog}); } }); }); // EDIT ROUTE app.get("/blogs/:id/edit", (req, res) => { Blog.findById(req.params.id, (err, foundBlog) => { if(err) { res.redirect("/blogs"); } else { res.render("edit", {blog: foundBlog}); } }); }); // UPDATE ROUTE app.put("/blogs/:id", (req, res) => { Blog.findByIdAndUpdate(req.params.id, req.body.blog, (err, updatedBlog) => { if(err) { res.redirect("/blogs"); } else { res.redirect("/blogs/" + req.params.id); } }); }); // DELETE ROUTE app.delete("/blogs/:id", (req, res) => { Blog.findByIdAndRemove(req.params.id, (err) => { if(err) { res.redirect("/blogs"); } else { res.redirect("/blogs"); } }); }); app.listen(3000, () => console.log('Blog server has started!'));