-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
84 lines (74 loc) · 2.68 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
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
import express from "express";
import cors from "cors";
import session from "express-session";
import mongoose from "mongoose";
import MongoStore from "connect-mongo";
import SearchController from "./controllers/search-page-controllers/search-controller.js";
import DetailsController from "./controllers/detail-page-controllers/coin-details-controller.js";
import MarketChartController from "./controllers/detail-page-controllers/coin-market-controller.js";
import WatchlistController from "./controllers/watchlist-controller.js";
import UsersController from "./controllers/users-controller.js";
import HomeController from "./controllers/home-page-controller/home-controller.js";
import CommentsController from "./controllers/comment-controller.js";
import FollowController from "./controllers/follow-controller.js";
import BlogsController from "./controllers/blogs-controller.js";
import {DB_USERNAME, DB_PASSWORD, SECRET} from "./util/global-variables.js";
// options for mongoDB
mongoose.set('strictQuery', false);
const options = {
useNewUrlParser: true,
useUnifiedTopology: true,
autoIndex: false,
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000,
family: 4
};
// build the connection string
const PROTOCOL = "mongodb+srv";
const HOST = "coinchatcluster.2rpbwui.mongodb.net";
const DB_NAME = "CoinChatDB";
const DB_QUERY = "retryWrites=true&w=majority&appName=CoinChatCluster";
const connectionString = `${PROTOCOL}://${DB_USERNAME}:${DB_PASSWORD}@${HOST}/${DB_NAME}?${DB_QUERY}`;
// connect to the database
mongoose.connect(connectionString, options)
.then(() => console.log("Connected to MongoDB"))
.catch((err) => console.log("Error connecting to MongoDB", err));
const app = express();
app.use(cors(
{
credentials: true,
origin: true
}));
const mongoStoreOptions = {
mongoUrl: connectionString,
};
const sessionStore = MongoStore.create(mongoStoreOptions);
let sess = {
secret: SECRET,
store: sessionStore,
saveUninitialized: false,
resave: false,
cookie: {
sameSite: process.env.NODE_ENV === "production" ? 'none' : 'lax',
secure: process.env.NODE_ENV === "production",
}
}
if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', 1) // trust first proxy
sess.cookie.secure = true // serve secure cookies
}
app.use(session(sess))
app.use(express.json());
app.get('/',(req, res) =>
res.send('CoinChat Back-End running...'));
UsersController(app);
SearchController(app);
DetailsController(app);
MarketChartController(app);
WatchlistController(app);
HomeController(app);
CommentsController(app);
FollowController(app);
BlogsController(app);
app.listen(process.env.PORT || 4000);