-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.js
46 lines (38 loc) · 1.79 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
const path = require('path');
const express = require('express');
const session = require('express-session');
const exphbs = require('express-handlebars');
const routes = require('./controllers');
const helpers = require('./utils/helpers');
// const granim = require('granim')
const sequelize = require('./config/connection');
const SequelizeStore = require('connect-session-sequelize')(session.Store);
const app = express();
const PORT = process.env.PORT || 3001;
// Set up Handlebars.js engine with custom helpers
const hbs = exphbs.create({ helpers });
// SESSIONS: install "express-session" and set up to be used in this following object here. In general it is called an "options object" that specifies your choices of functionality for NPM packages. Or to pass a specific piece of code, to a specific user, etc. NPM packages receives only objects so it is in object format.
const sess = {
// secret is random and needs to be different from app to app. It makes the session more secure.
secret: 'Mesh has secrets',
cookie: {},
// Typically false
resave: false,
// set to true because we want to save it even before the user has not logged in to check the login status is true or false.
saveUninitialized: true,
store: new SequelizeStore({
db: sequelize
})
};
// session here refers to the express-session package and it commands express app to use the object we created above:
app.use(session(sess));
// Inform Express.js on which template engine to use : HANDLEBARS
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));
app.use(routes);
sequelize.sync({ force: false }).then(() => {
app.listen(PORT, () => console.log('Now listening'));
});