-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
65 lines (51 loc) · 1.9 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
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const compression = require('koa-compress');
const convert = require('koa-convert');
const respond = require('koa-respond');
const glob = require('glob');
const path = require('path');
const mongoose = require('mongoose');
const morgan = require('koa-morgan');
const unless = require('koa-unless');
require('dotenv').config({ path: `${__dirname}/config/environments/${process.env.NODE_ENV}.env` });
require('./server/config/globalConstant');
mongoose.connect(MONGO_URL);
mongoose.connection.on('connected', function () {
console.log(`Connected to MongoDB`);
mongoose.set('debug', true);
});
mongoose.connection.on('error', function (err) {
console.log(`Mongoose connection error: ${err.message}`);
});
glob.sync('./server/**/*Model.js' ).forEach( function( file ) {
require(path.resolve( file ));
});
const customMiddleware = require('./server/utils/customMiddleware');
const app = new Koa();
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
console.log(`ERROR ::: Something went wrong, error: ${err.message}, stack: ${err.stack}`);
ctx.status = err.status || 500;
ctx.body = {message: err.message};
ctx.app.emit('error', err, ctx);
}
});
// read POST requests and cookies
app.use(bodyParser());
// use common features to make uploads and downloads smaller
app.use(compression());
app.use(respond());
app.use(morgan('dev'))
// Add auth middleware with unless
customMiddleware.authenticate.unless = unless
app.use(customMiddleware.authenticate.unless({ path: [/^\/public/] }));
// // support different functions for different pages on the server
// app.use(router.routes())
// .use(router.allowedMethods());
glob.sync('./server/**/*Route.js').forEach(function (file) {
Object.values(require(path.resolve(file))).forEach(router => app.use(router.routes(), router.allowedMethods()))
});
module.exports = app