-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
99 lines (80 loc) · 2.18 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
'use strict';
/*
* Express Dependencies
*/
var express = require('express');
var compression = require('compression');
var compressible = require('compressible');
var bodyParser = require('body-parser');
var app = module.exports = express();
var port = 3000;
var mongoose = require('mongoose');
var Place = require('./app/models/place');
/*
* Use Handlebars for templating
*/
var exphbs = require('express-handlebars');
var hbs;
// Enforce domain
if (process.env.SITE_URL) {
app.use(require('express-force-domain')(process.env.SITE_URL));
}
// For application/x-www-form-urlencoded body
app.use(bodyParser.urlencoded({ extended: false }));
// For application/json body
app.use(bodyParser.json());
// For gzip compression
app.use(compression({ filter: function() { return true; }}));
/*
* Config for Production and Development
*/
app.engine('handlebars', exphbs({
// Default Layout and locate layouts and partials
defaultLayout: 'main',
layoutsDir: 'app/views/layouts/',
partialsDir: 'app/views/partials/'
}));
// Locate the views
app.set('views', __dirname + '/app/views');
// Locate the public files
app.use(express.static(__dirname + '/public'));
// Set Handlebars
app.set('view engine', 'handlebars');
/*
* Routes
*/
var router = express.Router();
// Index Page
router.get('/', function(request, response, next) {
response.render('index', {
googleApiKey: process.env.GOOGLE_API_CLIENT_KEY,
googleAnalyticsKey: process.env.GOOGLE_ANALYTICS_KEY || false
});
});
app.use(router);
// Places
app.use('/places', require('./app/routes/places'));
/**
* Mongoose
*/
var options = { useMongoClient: true };
mongoose.connect(process.env.MONGODB_URI, options);
/**
* Bind mongoose connection error
*/
mongoose.connection.on('error', console.error.bind(console, 'connection error:'));
/*
* Start it up
*/
if (!module.parent) {
// Build cache
console.log('Building places cache');
Place.all(function(err) {
if (err) {
return console.error('Building places cache failed');
}
console.log('Places cache built');
app.listen(process.env.PORT || port);
console.log('Express started on port ' + port);
});
}