forked from t2k/nmbbSample
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
89 lines (76 loc) · 2.47 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
var express = require('express');
var http = require('http');
var nodemailer = require('nodemailer');
var MemoryStore = require('connect').session.MemoryStore;
var app = express();
var dbPath = 'mongodb://t2k:t2kmongo1@linus.mongohq.com:10062/t2k';
var fs = require('fs');
var events = require('events');
// Create an http server
app.server = http.createServer(app);
// Create an event dispatcher
var eventDispatcher = new events.EventEmitter();
app.addEventListener = function(eventName, callback) {
eventDispatcher.on(eventName, callback);
};
app.removeEventListener = function(eventName, callback) {
eventDispatcher.removeListener(eventName, callback);
};
app.triggerEvent = function(eventName, eventOptions) {
eventDispatcher.emit(eventName, eventOptions);
};
// Create a session store to share between methods
app.sessionStore = new MemoryStore();
// Import the data layer
var mongoose = require('mongoose');
var config = {
mail: require('./config/mail.example')
};
// Import the models
var models = {
Account: require('./models/Account')(app, config, mongoose, nodemailer)
};
app.configure(function() {
app.sessionSecret = 'SocialNetYOLO';
app.set('view engine', 'jade');
app.use(express.static(__dirname + '/public'));
app.use(express.limit('1mb'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
secret: app.sessionSecret,
key: 'express.sid',
store: app.sessionStore
}));
mongoose.connect(dbPath, function onMongooseError(err) {
if (err) throw err;
});
});
// Import the routes ... clever
fs.readdirSync('routes').forEach(function(file) {
if (file[0] === '.') return;
var routeName = file.substr(0, file.indexOf('.'));
//console.log('adding routes: ' + routeName);
require('./routes/' + routeName)(app, models);
});
app.get('/', function(req, res) {
res.render('index.jade');
});
app.post('/contacts/find', function(req, res) {
var searchStr = req.param('searchStr', null);
if (null === searchStr) {
res.send(400);
return;
}
models.Account.findByString(searchStr, function onSearchDone(err, accounts) {
if (err || accounts.length === 0) {
res.send(404);
}
else {
res.send(accounts);
}
});
});
// New in Chapter 9 - the server listens, instead of the app
app.server.listen(process.env.PORT);
console.log('Listening on process.env.PORT: ' + process.env.PORT);