Repository navigation
Expand file tree
/
Copy pathapp.js
More file actions
68 lines (54 loc) · 1.87 KB
/
Copy pathapp.js
File metadata and controls
68 lines (54 loc) · 1.87 KB
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
// Desc: Main application file for the backend
// Usage: node app.js
const config = require('./utils/config')
const express = require('express')
const morgan = require('morgan')
const app = express()
const cors = require('cors')
const logger = require('./utils/logger')
const mongoose = require('mongoose')
// express-async-errors allows for async/await syntax in express error handling
require('express-async-errors')
// controllers
const prototypesRouter = require('./controllers/prototypeController')
const usersRouter = require('./controllers/userController')
const loginRouter = require('./controllers/loginController')
// testing controller
if (process.env.NODE_ENV === 'test') {
const testingRouter = require('./controllers/testingController')
app.use('/api/testing', testingRouter)
}
// mongoose set strictQuery to false to allow for querying by id
mongoose.set('strictQuery', false)
logger.info('connecting to', config.MONGODB_URI)
mongoose
.connect(config.MONGODB_URI)
.then(() => {
logger.info('connected to MongoDB')
})
.catch((error) => {
logger.error('error connecting to MongoDB:', error.message)
})
// middleware
const middleware = require('./utils/middleware')
// cors allows requests from other origins
app.use(cors())
// morgan logs requests to the console
morgan.token('body', (req) => JSON.stringify(req.body))
app.use(
morgan(':method :url :status :res[content-length] - :response-time ms :body')
)
// express.static serves the build folder
// (as static files, like images or react code)
// app.use(express.static('build'))
// express.json parses json data from requests
app.use(express.json())
// routes
app.use('/api/prototypes', prototypesRouter)
app.use('/api/users', usersRouter)
app.use('/api/login', loginRouter)
// unknown endpoint handler
app.use(middleware.unknownEndpoint)
// error handler
app.use(middleware.errorHandler)
module.exports = app