-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
55 lines (49 loc) · 1.5 KB
/
server.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
//dependencies
const express = require('express')
const session = require('express-session')
const Handlebars = require('handlebars')
const exphbs = require('express-handlebars')
const bodyParser = require('body-parser')
const path = require('path')
require('dotenv').config()
//express
const app = express()
const PORT = process.env.PORT || 3001
app.use(express.static(path.join(__dirname, 'public')))
app.use(express.json())
app.use(bodyParser.urlencoded({ extended: false }))
//mysql2 and sequelize
const sequelize = require('./config/config')
sequelize.authenticate()
.then(() => console.log('coding_quiz_db connected...'))
.catch(err => console.log('db.authenticate error: ' + err))
const SequelizeStore = require('connect-session-sequelize')(session.Store)
//session
const sess = {
secret: 'Super secret secret',
cookie: {},
resave: false,
saveUninitialized: true,
store: new SequelizeStore({
db: sequelize
})
}
app.use(session(sess))
//handlebars view engine
const { allowInsecurePrototypeAccess } = require('@handlebars/allow-prototype-access');
app.engine('handlebars', exphbs({
defaultLayout: 'main',
handlebars: allowInsecurePrototypeAccess(Handlebars),
helpers: {
inc: function (value, options) {
return parseInt(value) + 1;
}
}
}))
app.set('view engine', 'handlebars')
// routes
app.use(require('./controllers/'));
app.listen(PORT, () => {
console.log(`listening on http://localhost:${PORT}`)
sequelize.sync({ force: false })
})