-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
120 lines (103 loc) · 2.52 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
//Module Dependencies
var express = require('express');
var app = module.exports = express.createServer();
// Configuration
var pub = __dirname + '/public';
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(pub));
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
var PostProvider = require('./postprovider').PostProvider;
var PostProvider= new PostProvider();
// Blog Index
app.get('/', function(req, res){
PostProvider.findAll(function(error, posts){
res.render('index', {
locals: {
title: 'My Blog',
posts: posts
}
});
})
});
// New
app.get('/posts/new', function(req, res){
res.render('post_new', {
locals: {
title: 'New Post'
}
});
});
// Create
app.post('/posts/new', function(req, res){
PostProvider.save({
title: req.param('title'),
body: req.param('body')
}, function(error, docs) {
res.redirect('/');
});
});
// Show
/*app.get('/posts/:id', function(req, res){
PostProvider.findById(req.param('id'), function(error, post) {
res.render('post_show', {
locals: {
title: post.title,
post:post
}
});
});
});*/
// ShowV2
app.get('/posts/:title', function(req, res){
PostProvider.findByTitle(req.param('title'), function(error, post) {
res.render('post_show', {
locals: {
title: post.title,
post:post
}
});
});
});
// Edit
app.get('/posts/:id/edit', function(req, res){
PostProvider.findById(req.param('id'), function(error, post) {
res.render('post_edit', {
locals: {
title: post.title,
post:post
}
});
});
});
// Update
app.post('/posts/:id/edit', function(req, res){
PostProvider.updateById(req.param('id'), req.body, function(error, post) {
res.redirect('/');
});
});
// Add Comment
app.post('/posts/addComment', function(req, res){
PostProvider.addCommentToPost(req.body._id, {
person: req.body.person,
comment: req.body.comment,
created_at: new Date()
}, function(error, docs) {
res.redirect('/posts/' + req.body._id)
});
});
// Only listen on $ node app.js
if (!module.parent) {
app.listen(3000);
console.log("Express server listening on port %d", app.address().port);
}