-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
49 lines (44 loc) · 1.36 KB
/
main.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
const jsonServer = require('json-server')
const queryString = require('querystring');
const server = jsonServer.create()
const router = jsonServer.router('db.json')
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.get('/echo', (req, res) => {
res.jsonp(req.query)
})
server.use(jsonServer.bodyParser)
server.use((req, res, next) => {
if(req.method === 'POST') {
req.body.createdAt = Date.now()
req.body.updatedAt = Date.now()
} else if(req.method === 'PATCH' || req.method === 'PUT') {
req.body.updatedAt = Date.now()
}
next()
})
router.render = (req, res) => {
const headers = res.getHeaders();
const totalCount = headers['x-total-count'];
console.log('============================> request info:')
console.log(req)
console.log('============================> totalCount info:')
console.log(totalCount)
if(req.originalMethod === 'GET' && totalCount){
const queryParams = queryString.parse(req._parsedOriginalUrl.query);
const result = {
data: res.locals.data,
pagination:{
_page: Number.parseInt(queryParams._page) || 1,
_limit: Number.parseInt(queryParams._limit) || 10,
_totalRows: Number.parseInt(totalCount)
}
}
return res.jsonp(result)
}
res.jsonp(res.locals.data)
}
server.use('/api', router)
server.listen(3000, () => {
console.log('JSON Server is running')
})