-
Notifications
You must be signed in to change notification settings - Fork 266
/
index.js
63 lines (52 loc) · 1.79 KB
/
index.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
var express = require('express');
var derby = require('derby');
var racerBrowserChannel = require('racer-browserchannel');
var liveDbMongo = require('livedb-mongo');
var MongoStore = require('connect-mongo')(express);
var $$app$$ = require('../$$app$$');
var error = require('./error');
var expressApp = module.exports = express();
var mongoUrl = process.env.MONGO_URL || 'mongodb://localhost:27017/project';
var store = derby.createStore({
db: {
db: liveDbMongo(mongoUrl + '?auto_reconnect', {safe: true})
, redis: require('redis').createClient()
}
});
function createUserId(req, res, next) {
var model = req.getModel();
var userId = req.session.userId || (req.session.userId = model.id());
model.set('_session.userId', userId);
next();
}
expressApp
.use(express.favicon())
// Gzip dynamically
.use(express.compress())
// Respond to requests for application script bundles
.use($$app$$.scripts(store))
// Serve static files from the public directory
// .use(express.static(__dirname + '/../../public'))
// Add browserchannel client-side scripts to model bundles created by store,
// and return middleware for responding to remote client messages
.use(racerBrowserChannel(store))
// Add req.getModel() method
.use(store.modelMiddleware())
// Parse form data
// .use(express.bodyParser())
// .use(express.methodOverride())
// Session middleware
.use(express.cookieParser())
.use(express.session({
secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE'
, store: new MongoStore({url: mongoUrl, safe: true})
}))
.use(createUserId)
// Create an express middleware from the app's routes
.use($$app$$.router())
.use(expressApp.router)
.use(error())
// SERVER-SIDE ROUTES //
expressApp.all('*', function(req, res, next) {
next('404: ' + req.url);
});