-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.coffee
More file actions
123 lines (102 loc) · 2.66 KB
/
server.coffee
File metadata and controls
123 lines (102 loc) · 2.66 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
116
117
118
119
120
121
122
123
# module dependencies
application_root = __dirname
express = require('express')
path = require('path')
mongoose = require('mongoose')
# Create server
app = express()
# Configure server
app.configure(()->
# parse request body and populates request.body
app.use(express.bodyParser())
# checks request.body for HTTP method overrides
app.use(express.methodOverride())
# perform route lookup based on URL and HTTP method
app.use(app.router)
# where to serve static content
app.use(express.static(path.join(application_root, 'site')))
# show all errors in development
app.use(express.errorHandler({dumpExceptions:true, showStack:true}))
)
# Connect to database
# Make sure you start MongoDB using administrator by
# executing "C:\mongodb\bin\mongod.exe"
# MongoDB should create database in C:\data\db directory.
mongoose.connect('mongodb://localhost/SteWebSiteDB')
# Schemas
blocks = new mongoose.Schema({
title: String,
description: String,
image: String
})
# Models
BlockModel = mongoose.model('Block', blocks)
# Router
# Get all blocks
app.get('/api/blocks', (request, response)->
return BlockModel.find((err, blocks)->
if not err
return response.send(blocks)
else
return console.l(err)
)
)
# Get a single block by id
app.get('/api/blocks/:id', (request, response)->
return BlockModel.findById(request.params.id, (err, block)->
if not err
return response.send(block)
else
return console.log(err)
)
)
# Update a block
app.put('/api/blocks/:id', (request,response)->
console.log('Updating block ' + request.body.title)
return BlockModel.findById(request.params.id, (err, block)->
block.title = request.body.title
block.description = request.body.description
block.image = request.body.image
return block.save((err)->
if not err
return console.log('block updated.')
else
return console.log(err)
return response.send(block)
)
)
)
# Delete a block
app.delete('/api/blocks/:id', (request, response)->
console.log('Deleting book with id: ' + request.body.id)
return BlockModel.findById(request.params.id, (err, block)->
return block.remove((err)->
if not err
console.log('Book removed')
return response.send('')
else
console.log(err)
)
)
)
# Insert a new book
app.post('/api/blocks', (request, response)->
block = new BlockModel({
title: request.body.title,
description: request.body.description,
image: request.body.image
})
block.save((err) ->
if not err
return console.log('created')
else
return console.log(err)
)
return response.send(block);
)
# Start server
port = 4711
app.listen(port, ()->
console.log('Express server listening on port %d in %s mode',
port, app.settings.env)
)