-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
132 lines (117 loc) · 3.3 KB
/
app.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
121
122
123
124
125
126
127
128
129
130
131
132
//include npm modules
const mongoose = require("mongoose"),
bodyParser = require("body-parser"),
methodOverride = require("method-override"),
expressSanitizer = require("express-sanitizer"),
express = require("express"),
app = express();
//app config
app.set("view engine", "ejs");
app.use(express.static("public"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(expressSanitizer());
app.use(methodOverride("_method"));
//define DB connection
mongoose.connect('mongodb://localhost:27017/restful_blog_app', {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('Connected to DB!'))
.catch(error => console.log(error.message));
//define SCHEMA
const blogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: {type: Date, default: Date.now}
});
//compile to model
let Blog = mongoose.model("Blog", blogSchema);
//TEST ENTRY
/* Blog.create({
title: "test blog",
image: "https://images.unsplash.com/photo-1507146426996-ef05306b995a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=900&q=60",
body: "HELLO THIS IS A BLOG POST!",
}); */
// RESTFUL ROUTES
app.get("/", function (req, res) {
res.redirect("/blogs");
})
//INDEX ROUTE
app.get("/blogs", function (req, res) {
Blog.find({}, function (err, blogs) {
if (err) {
console.log("SOMETHING WENT WRONG");
console.log(err);
} else {
res.render("index", {blogs: blogs});
}
});
});
//NEW ROUTE
app.get("/blogs/new", function (req, res) {
res.render("new");
});
//CREATE
app.post("/blogs", function (req, res) {
//create blog
console.log(req.body);
req.body.blog.body = req.sanitize(req.body.blog.body);
console.log("---------------");
console.log(req.body);
Blog.create(req.body.blog, function (err) {
if (err) {
console.log("SOMETHING WENT WRONG CREATING A NEW BLOG");
console.log(err);
res.render("new");
} else {
//redirect to index
res.redirect("/blogs");
}
});
});
//SHOW
app.get("/blogs/:id", function (req, res) {
Blog.findById(req.params.id, function (err, foundBlog) {
if (err) {
res.redirect("/blogs");
} else {
res.render("show", {blog: foundBlog})
}
})
})
//EDIT ROUTE
app.get("/blogs/:id/edit", function (req, res) {
Blog.findById(req.params.id, function (err, foundBlog) {
if (err) {
res.redirect("/blogs");
} else {
res.render("edit", {blog: foundBlog});
}
});
})
//UPDATE ROUTE
app.put("/blogs/:id", function (req, res) {
req.body.blog.body = req.sanitize(req.body.blog.body);
Blog.findByIdAndUpdate(req.params.id, req.body.blog, function (err) {
if (err) {
res.redirect("/blogs");
} else {
res.redirect("/blogs/" + req.params.id);
}
});
})
app.delete("/blogs/:id", function (req, res) {
//destroy blog
Blog.findByIdAndRemove(req.params.id, function (err) {
if (err) {
res.redirect("/blogs");
} else {
res.redirect("/blogs");
}
});
});
//SERVER CHECK
app.listen(7000, function () {
console.log("Blog App hat started on Port 7000");
});