-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
130 lines (98 loc) · 2.75 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
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
expressSanitizer = require("express-sanitizer"),
methodOverride = require("method-override"),
mongoose = require("mongoose");
// App config
mongoose.connect("mongodb://localhost/restful_app");
app.set('view engine', 'ejs');
app.use(express.static("public"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(expressSanitizer());
app.use(methodOverride("_method"));
// Mongoose/model config
var restappSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: { type: Date, default: Date.now }
});
var Blog = mongoose.model("Blog", restappSchema);
// Restful Routes
app.get('/', (req, res) => {
res.redirect("/blogs");
});
// Index Route
app.get('/blogs', (req, res) => {
Blog.find({}, function(err, blogs){
if(err){
console.log(err);
} else {
res.render("index", {blogs: blogs})
}
});
});
// New Route - for new form post
app.get('/blogs/new', (req, res) => {
res.render("new");
});
// Create Route - to store post to db and redirect
app.post('/blogs', (req, res) => {
// create blog
req.body.blog.body = req.sanitize(req.body.blog.body);
Blog.create(req.body.blog, function(err, newBlog){
if(err){
console.log(err);
res.render("new");
} else {
//redirect
res.redirect("/blogs");
}
});
});
// Show Route - shows the details of one particular blog post
app.get('/blogs/:id', (req, res) => {
Blog.findById(req.params.id, function(err, foundBlog){
if(err){
res.redirect("/blogs");
} else {
res.render("show", {blog: foundBlog});
}
});
});
app.get('/blogs/:id/edit', (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', (req, res) => {
req.body.blog.body = req.sanitize(req.body.blog.body);
Blog.findByIdAndUpdate(req.params.id, req.body.blog, function(err, updatedBlog){
if (err){
res.redirect("/blogs");
} else{
res.redirect("/blogs/" + req.params.id);
}
});
});
//Delete Route
app.delete('/blogs/:id', (req, res) => {
//destroy blog
Blog.findByIdAndRemove(req.params.id, function(err){
if (err){
res.redirect("/blogs");
} else {
//redirect somewhere
res.redirect("/blogs");
}
});
});
app.listen(3000, () => {
console.log('App just started and is listening on port 3000!');
});