-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
115 lines (88 loc) · 6.49 KB
/
app.js
File metadata and controls
115 lines (88 loc) · 6.49 KB
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
require('dotenv').config();
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
var _ = require('lodash');
const app = express();
const mongoose=require("mongoose");
// const homeStartingContent = "Apple wants a weekend or expensive dui want to decorate. Which is always the creator nor the duration of her life. Carrots carrots just been running a lot. Product lived in this. Financing yeast rice vegetarian or clinical portal. That they are not members, nor members of the Donec ultrices tincidunt arcu. A lot of television targeted at the undergraduate nutrition. Of life, and the mountains shall be born, ultricies quis, congue in magnis dis parturient. Adipiscing elit ut aliquam purus sit amet luctus venenatis lectus. The founder of basketball and football propaganda graduated drink at the arc. Performance skirt smile at any hate for hate vulputate. Running a lot of television targeted at the undergraduate nutrition.";
// const aboutContent = "Hac habitasse platea dictumst vestibulum rhoncus est pellentesque. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Non diam phasellus vestibulum lorem sed. Platea dictumst quisque sagittis purus sit. Egestas sed sed risus pretium quam vulputate dignissim suspendisse. Mauris in aliquam sem fringilla. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Amet massa vitae tortor condimentum lacinia quis vel eros. Enim ut tellus elementum sagittis vitae. Mauris ultrices eros in cursus turpis massa tincidunt dui.";
// const contactContent = "Scelerisque eleifend donec pretium vulputate sapien. Rhoncus urna neque viverra justo nec ultrices. Arcu dui vivamus arcu felis bibendum. Consectetur adipiscing elit duis tristique. Risus viverra adipiscing at in tellus integer feugiat. Sapien nec sagittis aliquam malesuada bibendum arcu vitae. Consequat interdum varius sit amet mattis. Iaculis nunc sed augue lacus. Interdum posuere lorem ipsum dolor sit amet consectetur adipiscing elit. Pulvinar elementum integer enim neque. Ultrices gravida dictum fusce ut placerat orci nulla. Mauris in aliquam sem fringilla ut morbi tincidunt. Tortor posuere ac ut consequat semper viverra nam libero.";
const homeStartingContent="Welcome to our daily journal.Let's get started by adding new blog posts just by clicking on new blog on the top right corner."
var firstPost={
title:"Day 1",
content:"Hello there, I have made this blogging website using HTML, CSS, Bootstrap, Javascript, Node.js and Express. I have also used EJS for templating and layouts."
};
var secondPost={
title:"Day 2",
// content:"Hello there, I have made this blogging website using HTML, CSS, Bootstrap, Javascript, Node.js and Express. I have also used EJS for templating and layouts."
content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tellus at urna condimentum mattis pellentesque. Et malesuada fames ac turpis. Id faucibus nisl tincidunt eget nullam non. Adipiscing diam donec adipiscing tristique risus. Nulla pellentesque dignissim enim sit amet venenatis urna. Tincidunt ornare massa eget egestas purus viverra accumsan in. Odio morbi quis commodo odio aenean sed adipiscing diam donec. Sed faucibus turpis in eu mi. Ut tellus elementum sagittis vitae et leo duis ut diam. Hendrerit dolor magna eget est. Sapien faucibus et molestie ac feugiat sed lectus vestibulum. Sit amet consectetur adipiscing elit ut. Euismod quis viverra nibh cras pulvinar mattis. Sodales ut etiam sit amet nisl. Velit scelerisque in dictum non consectetur a. Tempor orci eu lobortis elementum. Vestibulum rhoncus est pellentesque elit. Dui id ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu. Odio ut sem nulla pharetra diam sit amet nisl. Ultrices vitae auctor eu augue ut lectus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Malesuada fames ac turpis egestas. Commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Neque laoreet suspendisse interdum consectetur libero id faucibus nisl. Commodo nulla facilisi nullam vehicula ipsum a. Tortor condimentum lacinia quis vel eros donec. Elit at imperdiet dui accumsan. Ultrices gravida dictum fusce ut placerat. Ac odio tempor orci dapibus ultrices. Blandit turpis cursus in hac habitasse platea dictumst. Sed vulputate odio ut enim. Non curabitur gravida arcu ac tortor. Sed risus ultricies tristique nulla. Pellentesque adipiscing commodo elit at."
};
const defaultPosts=[firstPost,secondPost];
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));
// Database:
//connection
mongoose.connect(process.env.DB_URL);
// schema
const postSchema=new mongoose.Schema({
title:{
type:String,
required:[true,"Please provide a title"]
},
content:{
type:String,
required:[true,"Please add some content in your blog"]
}
});
const Post=mongoose.model("post",postSchema);
app.get("/", function (req, res) {
res.render("home"); //initially posts=empty
});
app.get("/homepage",function(req,res){
Post.find(function(err,result){
if(result.length==0)
{
Post.insertMany(defaultPosts,function(err){
if(err)
console.log(err);
else
console.log("Successfully inserted default posts in our database");
});
}
});
Post.find(function(err,result){
res.render("homepage",{ homeContent: homeStartingContent, posts: result});
});
});
app.get("/contact", function (req, res) {
res.render("contact");
});
app.get("/about", function (req, res) {
res.render("about", { aboutContent: aboutContent });
});
app.get("/compose", function (req, res) {
res.render("compose");
});
app.post("/compose", function (req, res) {
const newPost = new Post({ //const=>as we don't have to change it anywhere
title: req.body.postTitle,
content: req.body.postBody
});
newPost.save();
res.redirect("homepage");
});
app.post("/contact",function(req,res){
res.render("success");
});
app.get("/posts/:postId", function (req, res) {
//using dynamic url by express routing
const Id=req.params.postId;
Post.findById(Id,function(err,result){
res.render("post",{Title:result.title,Content:result.content});
});
});
app.listen(process.env.PORT || 3000, function () {
console.log("Server started on port 3000");
});