-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
148 lines (122 loc) · 4.02 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const mongodb = require('mongodb');
const expressSanitizer = require("express-sanitizer");
const methodOverride = require("method-override");
const db = require("./db");
const ObjectId = mongodb.ObjectId;
app.set("view engine", "ejs"); // Alloy using ejs, without write the complete name
app.use(bodyParser.urlencoded({extended: true})); // it's for gettin the input from the forms
app.use(express.static("public/stylesheets")); // this allow to get the CSS styles inse the folder path
app.use(bodyParser.json());
app.use(expressSanitizer());
app.use(methodOverride("_method"));
const collection = "blogs";
//RESTFULL ROUTES
app.get("/", function(req, res) {
res.redirect("/blogs");
});
//INDEX ROUTE
app.get("/blogs", function(req, res){
db.getDB().collection(collection).find({}).toArray((err, blogs) =>{
if(err){
console.log("ERROR");
}else{
res.render("index", {blogs: blogs});
}
});
});
//NEW ROUTE
app.get("/blogs/new", function(req, res) {
res.render("new");
});
//CREATE ROUTE
app.post("/blogs", function(req, res){
//create blog
let title = req.body.title;
let image = req.body.image;
let content = req.sanitize(req.body.content);
let createdat = Date("<YYYY-mm-ddTHH:MM:ss>");
let newBlog = {title: title, image: image, content: content, createdat: createdat };
console.log(newBlog);
console.log("=======================================");
db.getDB().collection(collection).insertOne(newBlog, function(err, newBlog){
if(err){
res.render("new");
}else{
//then reditect to blogs
//console.log(newBlog);
res.redirect("/blogs");
}
});
});
//SHOW ROUTE
app.get("/blogs/:id", function(req, res) {
const blogID = req.params.id;
db.getDB().collection(collection).findOne({_id: new ObjectId(blogID)}, function(err, foundBlog){
if(err){
res.redirect("/blogs");
}else{
console.log(foundBlog)
res.render("show", {blog: foundBlog});
}
});
});
//EDIT ROUTE
app.get("/blogs/:id/edit", function(req, res) {
const blogID = req.params.id;
db.getDB().collection(collection).findOne({_id: new ObjectId(blogID)}, function(err, foundBlog){
if(err){
res.redirect("/blogs");
}else{
res.render("edit", {blog: foundBlog});
}
});
});
//UPDATE ROUTE
app.put("/blogs/:id", function(req, res){
//create blog
const blogID = req.params.id;
let title = req.body.title;
let image = req.body.image;
let content = req.sanitize(req.body.content);
let createdat = new Date("<YYYY-mm-ddTHH:MM:ss>");
let updateBlog = {title: title, image: image, content: content, createdat: createdat };
db.getDB().collection(collection).updateOne({_id: new ObjectId(blogID)}, {$set: updateBlog }, function(err, updateBlog){
if(err){
res.redirect("/blogs");
}else{
res.redirect("/blogs/" + req.params.id);
}
});
});
//DELETE ROUTE
app.delete("/blogs/:id", function(req, res){
const blogID = req.params.id;
//destroy blog
db.getDB().collection(collection).deleteOne({_id: new ObjectId(blogID)}, function(err){
if(err){
res.redirect("/blogs");
}else{
res.redirect("/blogs");
}
});
//redirect somewhere
});
/// Establishing the conection of the DB and running the App if everything is OK
db.connect((err) => {
if(err){
console.log('unable to connect to database Broh');
process.exit()
}else{
//For the localhost enviroment
/* app.listen(8080, function() {
console.log("This server is runing in PORT 8080 Broh!, and the DB is also running")
}); */
// For the Cloud on Heroku
app.listen(process.env.PORT, process.env.IP, function(){
console.log("RichardCamp is open!");
});
}
});